logo

Python'da Shutil Modülü

Bu dersimizde Python'daki Shutil modülünü öğreneceğiz. Python betiğini kullanarak yeni bir kopya dosyası oluşturup arşivlemek ve içeriği bir dosyadan başka bir dosyaya kopyalamak gibi üst düzey dosya işlemlerini nasıl gerçekleştirebileceğimizi tartışacağız. Shutil modülünün temel tanıtımını yapalım.

bash'taki alt dize

Python Shutil Modülü

Python Shutil modülü, üst düzey dosya işlemlerini gerçekleştirme olanağı sağlar. Dosya nesnesi ile çalışabilmektedir ve bize dosyaları kopyalayıp kaldırma olanağı sunmaktadır. Tüm işlemleri gerçekleştirdikten sonra dosya nesnelerinin oluşturulması ve kapatılması gibi düşük seviyeli anlambilimi yönetir.

Shutil Modülünün Çalışması

Python Shutil modülü birçok yerleşik yöntemle birlikte gelir. Birkaç önemli yöntemi inceleyeceğiz. Bu modülle çalışmaya başlamak için öncelikle onu mevcut Python dosyamıza aktarmamız gerekiyor.

Dosyaları Kopyala

Bu modül şunları sağlar: kopya() Verileri bir dosyadan diğerine kopyalamak için kullanılan işlev. Dosyalar aynı dizinde olmalı ve hedef dosya yazılabilir olmalıdır. Aşağıdaki sözdizimini anlayalım.

Sözdizimi-

 shutil.copyfile(source, destination, *, follow_symlinks = True) 

Parametre:

Yukarıdaki sözdiziminde -

  • İlk argüman, kaynak dosyanın yolunu gösteren kaynaktır.
  • İkinci argüman, hedef dosyanın yolunu gösteren hedeftir.
  • Üçüncü argüman isteğe bağlıdır; Bu parametrenin varsayılan değeri true'dur.
  • Yeni oluşturulan dosyanın yolunu gösteren bir dize döndürür.

Aşağıdaki örneği anlayalım.

Örnek -

 import os import shutil # Creating a new folder in the current directory os.mkdir('javatpoint') # It will show the empty folder print('Empty Folder:', os.listdir('javatpoint')) # testcompare.py file will be copied in the javatpoint folder shutil.copy('testcompare.py', 'javatpoint') # After coping the file folder shows the file print('File Copied Name:', os.listdir('javatpoint')) 

Çıktı:

 Empty Folder: [] File Copied Name: ['testcompare.py'] 

Açıklama -

copy() işlevi dizin adını argüman olarak alır. İşte meta veri kopyalanmazsa, kopyalanan dosya yeni oluşturulan dosya olarak kabul edilecektir. Bu yöntem aynı zamanda dosyanın tüm izinlerini de kopyaladı. Unutulmaması gereken nokta, hedef dosya zaten mevcutsa kaynak dosyayla değiştirileceğidir.

Başka bir örnek görelim.

Örnek - 2, eğer hedef bir dizin ise

 import os import shutil # hello.txt file will be copied source = r'D:Python Projectjavatpointhello.txt' # In the newly created foloder destination = r'D:Python ProjectNewFile' # Storing the new path of hello.txt file dest = shutil.copy(source, destination) # Print the new path print(dest) 

Çıktı:

 D:Python ProjectNewFilehello.txt 

Daha önce de belirttiğimiz gibi copy() işlevi meta verileri kopyalamaz. Ama kullanacağız kopya2() dosyayı meta verileriyle birlikte kopyalamamıza olanak tanıyan işlev.

Örnek - 3: Kopyalama yöntemini kullanırken hata yönetimi

 # importing shutil module import shutil # It is a source path source = r'D:Python ProjectNewFolder' # It is a destination path destination = r'D:Python ProjectNewFolder' try: shutil.copy(source, destination) print('File copied successfully.') # If the given source and path are same except shutil.SameFileError: print('Source and destination represents the same file.') # If there is no permission to write except PermissionError: print('Permission denied.') # For other errors except: print('Error occurred while copying file.') 

Çıktı:

 Source and destination represents the same file. 

copy2() İşlevi

Bu fonksiyon şuna benzer: kopya() işlev. Ayrıca bir dosyanın içeriğini diğerine kopyalayabilir ancak tek fark, dosyanın meta verilerini koruyabilmesidir. Aşağıdaki sözdizimini anlayalım.

Sözdizimi:

 shutil.copy2(source, destination, *, follow_symlinks = True) 

Parametre:

Yukarıdaki sözdiziminde -

  • İlk argüman, kaynak dosyanın yolunu gösteren kaynaktır.
  • İkinci argüman, hedef dosyanın yolunu gösteren hedeftir.
  • Üçüncü argüman isteğe bağlıdır; Bu parametrenin varsayılan değeri true'dur.
  • Yeni oluşturulan dosyanın yolunu gösteren bir dize döndürür.

Aşağıdaki örneği anlayalım.

Örnek -

 import os import shutil # hello.txt file will be copied source = r'D:Python Projectjavatpointhello.txt' metadata = os.stat(source) print(metadata) # In the newly created foloder destination = r'D:Python ProjectNewFile' # Storing the new path of hello.txt file dest1 = shutil.copy2(source, destination) metadata = os.stat(dest1) print('After copying file') print(metadata) # Print the new path print(dest1) 

Çıktı:

 os.stat_result(st_mode=33206, st_ino=562949953459285, st_dev=3029671014, st_nlink=1, st_uid=0, st_gid=0, st_size=17, st_atime=1622815671, st_mtime=1622705607, st_ctime=1622705607) After copying file os.stat_result(st_mode=33206, st_ino=562949953459287, st_dev=3029671014, st_nlink=1, st_uid=0, st_gid=0, st_size=17, st_atime=1622815748, st_mtime=1622705607, st_ctime=1622706243) D:Python ProjectNewFilehello.txt 

Shutil.copyfile() İşlevi

Bu yöntem, kaynak dosyanın içeriğini meta verileri bekleyerek hedef dosyaya kopyalamak için kullanılır. Kaynak ve hedefin bir dosyası olmalı ve hedef dosya yazma iznini sağlamalıdır. Hedef dosya zaten mevcutsa yeni dosyayla değiştirilecektir, aksi halde yeni dosya oluşturulacaktır.

Arraylist Java sıralaması

Aşağıdaki söz dizimini görelim.

Sözdizimi:

 shutil.copyfile(source, destination, *, follow_symlinks = True) 

Parametreler:

Yukarıdaki sözdiziminde -

  • İlk argüman, kaynak dosyanın yolunu gösteren kaynaktır.
  • İkinci argüman, hedef dosyanın yolunu gösteren hedeftir.
  • Üçüncü argüman isteğe bağlıdır; Bu parametrenin varsayılan değeri true'dur.
  • Yeni oluşturulan dosyanın yolunu gösteren bir dize döndürür.

Aşağıdaki örneği anlayalım.

Örnek -

 import shutil # hello.txt file will be copied source = r'D:Python Projectjavatpointhello.txt' # In the newly created foloder destination = r'D:Python ProjectNewFilehi.txt' # Storing the new path of hello.txt file dest1 = shutil.copyfile(source, destination) # Print the new path print(dest1) 

Çıktı:

 D:Python ProjectNewFilehi.txt 

Shutil.copytree() İşlevi

Bu yöntem, dizinin tamamını çoğaltmak için kullanılır. Kökü kaynakta bulunan bir dizin ağacının tamamını hedef dizine kopyalar. Hedef dizin halihazırda mevcut olmamalıdır. Aşağıdaki söz dizimini görelim.

Sözdizimi:

 shutil.copytree(src, dst, symlinks = False, ignore = None, copy_function = copy2, igonre_dangling_symlinks = False) 

Parametreler:

piton programları

Yukarıdaki sözdiziminde:

    kaynak -Kaynak dizinin yolunu gösterir.el -Hedef dizinin yolunu gösterir.sembolik bağlantılar (isteğe bağlı) -Boolean değerlerini (Doğru ve Yanlış) alır. Orijinal bağlantıların veya bağlantıların meta verilerinin yeni ağaca kopyalanacağına bağlıdır.yoksay (isteğe bağlı) -Varsayılan olarak Hiçbiri'dir ancak yoksayma iletilirse, argüman olarak alınan bir çağrılabilir olmalıdır. Dizin copytree() tarafından ziyaret edilir.copy_function(isteğe bağlı) -copy2 bu parametrenin varsayılan değeridir. kopya() fonksiyonu parametre olarak kullanılabilir.görmezden_dangling_symlinks(isteğe bağlı) -Bu parametre, sembolik bağlantıyla işaret edilen dosyanın mevcut olmaması durumunda istisnayı ortaya çıkarmak için kullanılır.
  • Yeni oluşturulan dizinin yolunu temsil eden dizeyi döndürür.

Örnek -

 # importing shutil module import shutil # It is source path src = r'D:Python Projectjavatpoint' # It is destination path dest = r'D:Python ProjectNewFolder' # Copy the content of # source to destination dest1 = shutil.copytree(src, dest) # Now we print path of newly # created file print('Destination path:', dest1) 

Çıktı:

 Destination path: D:Python ProjectNewFolder 

Shutil.rmtree()

Bu yöntem, dizin ağacının tamamını silmek için kullanılır. Aşağıdaki söz dizimini görelim.

Sözdizimi:

 shutil.rmtree(path, ignore_errors=False, onerror=None) 

Parametre-

java operatörleri

Yukarıdaki sözdiziminde -

    yol -Dosya yolunu temsil eder. Yol benzeri bir nesne, bir dize veya bayt nesnesidir.görmezden_hatalar -Bu bağımsız değişken Doğru ise kaldırma işlemi göz ardı edilecektir.hata durumunda -Eğer görmezden_hatalar yanlışsa, bu tür hatalar onerror tarafından belirtilen işleyicinin çağrılmasıyla işlenir.

Aşağıdaki örneği anlayalım -

Örnek -

 import shutil import os # location location_dir = r'D:Python ProjectNewFile' # directory directory = r'D:Python Projectjavatpoint' # path path1 = os.path.join(location_dir, directory) # removing directory shutil.rmtree(path1) 

Yukarıdaki kod verilen dizini kaldıracaktır.

Shutil.hangi() İşlevi

kapat.hangi() işlevi, verilen cmd'nin çağrılması durumunda çalıştırılacak yürütülebilir uygulamanın yolunu almak için kullanılır. Verilen yolda dosyayı bulur. Aşağıdaki söz dizimini görelim.

Sözdizimi:

 shutil.which(cmd, mode = os.F_OK | os.X_OK, path = None) 

Parametreler

Yukarıdaki sözdiziminde -

    cmd -Dosyayı temsil eden dizedir.mod -Yöntemin yürütülmesi gereken dosya modunu belirtir.yol -Bu parametre kullanılacak yolu belirtir.
  • Bu yöntem yürütülebilir bir uygulamanın yolunu döndürür.

Aşağıdaki örneği anlayalım.

Örnek -

 # importing shutil module import shutil # search the file cmd = 'python' # Using shutil.which() method locating = shutil.which(cmd) # Print result print(locating) 

Çıktı:

 C:Pythonpython.EXE 

Verilen dosyayı bilgisayarda bulur, eğer dosya bulunursa dosyanın yolunu döndürür, aksi halde Yok değerini döndürür.