このチュートリアルでは、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)
パラメーター:
上記の構文では次のようになります。
- 新しく作成されたディレクトリのパスを表す文字列を返します。
例 -
# 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)
パラメータ-
上記の構文では -
次の例を理解してみましょう -
例 -
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)
パラメーター
上記の構文では -
- このメソッドは、実行可能アプリケーションへのパスを返します。
次の例を理解してみましょう。
例 -
# 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 を返します。