logo

Python の Shutil モジュール

このチュートリアルでは、Python の Shutil モジュールについて学びます。 Python スクリプトを使用して、新しいコピー ファイルを作成してアーカイブし、コンテンツをあるファイルから別のファイルにコピーするなど、高レベルのファイル操作を実行する方法について説明します。 Shutil モジュールの基本的な紹介をしましょう。

Python Shutil モジュール

Python shutil モジュールは、高レベルのファイル操作を実行する機能を提供します。ファイル オブジェクトを操作でき、ファイルのコピーと削除の機能を提供します。すべての操作を実行した後にファイル オブジェクトを作成したり閉じたりするなど、低レベルのセマンティクスを処理します。

Java 変数 変数

Shutilモジュールの動作

Python shutil モジュールには多くの組み込みメソッドが付属しています。いくつかの重要な方法を検討します。このモジュールの使用を開始するには、まず現在の Python ファイルにモジュールをインポートする必要があります。

ファイルのコピー

このモジュールが提供するのは、 コピー() あるファイルから別のファイルにデータをコピーするために使用される関数。ファイルは同じディレクトリに存在し、宛先ファイルは書き込み可能である必要があります。次の構文を理解しましょう。

構文-

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

パラメータ:

上記の構文では -

  • 第一引数はsourceでソースファイルのパスを示します。
  • 2 番目の引数は宛先で、宛先ファイルのパスを示します。
  • 3 番目の引数はオプションです。このパラメータのデフォルト値は true です。
  • 新しく作成されたファイルのパスを示す文字列を返します。

次の例を理解してみましょう。

例 -

 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')) 

出力:

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

説明 -

copy() 関数は引数としてディレクトリ名を受け取ります。ここで、 metadata がコピーされていない場合、コピーされたファイルは新しく作成されたファイルとみなされます。この方法では、ファイルのすべての権限も複製されます。注意すべき点の 1 つは、宛先ファイルが既に存在する場合は、ソース ファイルに置き換えられるということです。

別の例を見てみましょう。

例 - 2 宛先がディレクトリの場合

 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) 

出力:

 D:Python ProjectNewFilehello.txt 

前述したように、copy() 関数はメタデータをコピーしません。ただし、使用するのは、 コピー2() この関数を使用すると、メタデータを含むファイルをコピーできます。

例 - 3: copy メソッド使用時のエラー処理

 # 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.') 

出力:

 Source and destination represents the same file. 

copy2() 関数

この関数は、 コピー() 関数。あるファイルの内容を別のファイルにコピーすることもできますが、唯一の違いは、ファイルのメタデータを保持できることです。次の構文を理解しましょう。

構文:

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

パラメータ:

上記の構文では -

  • 第一引数はsourceでソースファイルのパスを示します。
  • 2 番目の引数は宛先で、宛先ファイルのパスを示します。
  • 3 番目の引数はオプションです。このパラメータのデフォルト値は true です。
  • 新しく作成されたファイルのパスを示す文字列を返します。

次の例を理解してみましょう。

例 -

 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) 

出力:

 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() 関数

このメソッドは、メタデータを除いてソース ファイルの内容を宛先ファイルにコピーするために使用されます。ソースと宛先にはファイルが必要で、宛先ファイルには書き込み権限が提供されている必要があります。宛先ファイルが既に存在する場合は、新しいファイルに置き換えられます。それ以外の場合は、新しいファイルを作成します。

次の構文を見てみましょう。

構文:

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

パラメーター:

上記の構文では -

  • 第一引数はsourceでソースファイルのパスを示します。
  • 2 番目の引数は宛先で、宛先ファイルのパスを示します。
  • 3 番目の引数はオプションです。このパラメータのデフォルト値は true です。
  • 新しく作成されたファイルのパスを示す文字列を返します。

次の例を理解してみましょう。

例 -

 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) 

出力:

 D:Python ProjectNewFilehi.txt 

shutil.copytree() 関数

この方法は、ディレクトリ全体を複製するために使用されます。これは、ソースをルートとするディレクトリ ツリー全体を宛先ディレクトリにコピーします。宛先ディレクトリはまだ存在していてはなりません。次の構文を見てみましょう。

tostringメソッドJava

構文:

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

パラメーター:

上記の構文では次のようになります。

    ソース -ソースディレクトリのパスが表示されます。手 -宛先ディレクトリのパスが表示されます。シンボリックリンク(オプション) -ブール値 (True と False) を受け取ります。それは、元のリンクまたはリンクのどちらのメタデータが新しいツリーにコピーされるかによって異なります。無視(オプション) -デフォルトでは None ですが、ignore が渡される場合は、引数として受け取る呼び出し可能オブジェクトである必要があります。このディレクトリは copytree() によってアクセスされます。copy_function(オプション) -copy2 は、このパラメータのデフォルト値です。の コピー() 関数をパラメータとして使用できます。無視_dangling_symlinks(オプション) -このパラメータは、シンボリックリンクが指すファイルが存在しない場合に例外を発生させるために使用されます。
  • 新しく作成されたディレクトリのパスを表す文字列を返します。

例 -

 # 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) 

出力:

 Destination path: D:Python ProjectNewFolder 

shutil.rmtree()

このメソッドは、ディレクトリ ツリー全体を削除するために使用されます。次の構文を見てみましょう。

構文:

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

パラメータ-

上記の構文では -

    パス -ファイルパスを表します。パスのようなオブジェクトは、文字列オブジェクトまたはバイト オブジェクトのいずれかです。無視_エラー -この引数が True の場合、削除は無視されます。エラー時 -もし 無視エラー が false の場合、そのようなエラーは onerror で指定されたハンドラーを呼び出すことによって処理されます。

次の例を理解してみましょう -

例 -

 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) 

上記のコードは、指定されたディレクトリを削除します。

shutil.that() 関数

shutil.that() 関数は、指定された cmd が呼び出された場合に実行される実行可能アプリケーションのパスを取得するために使用されます。指定されたパスでファイルを検索します。次の構文を見てみましょう。

構文:

Javaの有効な識別子
 shutil.which(cmd, mode = os.F_OK | os.X_OK, path = None) 

パラメーター

上記の構文では -

    cmd -ファイルを表す文字列です。モード -メソッドを実行するファイルのモードを指定します。パス -このパラメータは、使用するパスを指定します。
  • このメソッドは、実行可能アプリケーションへのパスを返します。

次の例を理解してみましょう。

例 -

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

出力:

 C:Pythonpython.EXE 

コンピュータ内で指定されたファイルを検索します。ファイルが見つかった場合はファイルのパスを返し、それ以外の場合は None を返します。