Pythonでファイルをコピーする
以前のチュートリアルでは、読み取り、書き込み、削除などのPythonファイル操作を学びました。 このチュートリアルでは、Pythonでファイルをコピーする方法を学びましょう。このチュートリアルでは、
shutil
モジュールos
モジュールsubprocess
モジュール
上記のモジュールで提供されているさまざまな方法を使用して、Pythonでファイルをコピーする方法を学習します。p>
1. Pythonでファイルをコピーするshutilモジュール
shutil
モジュールは、私たちが削除するだけでなく、Pythonでファイルをコピーすることができます使用してい このモジュールの下で定義されている、コピーに特に使用されるさまざまなメソッドを見てみましょう。
1. copyfileobj()
copyfileobj()
メソッドは、それぞれのファイルオブジェクトを使用して、ソースファイルの内容をターゲットファイルにコピーします。 以下のコードを見てみましょう、
import shutilsrc_file_obj=open('src.txt', 'rb')targ_file_obj= open('targ.txt' , 'wb')shutil.copyfileobj( src_file_obj , targ_file_obj )
注:ファイルオブジェクトは、コンテンツ全体をコピーするために、それぞれのソー
2. copyfile()
copyfile()
メソッドは、ファイルパスを使用してソースからターゲットファイルにコンテンツをコピーします。 これは、ターゲットファイルのパスを返します。 ターゲットファイルのパスは書き込み可能でなければなりません。p>
import shutilshutil.copyfile( 'src.txt' , 'targ.txt' )
このメソッドは、ディレクトリではなくファイルパスの使用のみを許可することに注意してください。
3. copy()
このメソッドは、ソースファイルをターゲットファイルまたはターゲットディレクトリにコピーします。 copyfile()
copy()
copy()
内容をコピーした後、ターゲットファイルへのパスを返します。 p>
import shutilshutil.copy('/Users/test/file.txt', '/Users/target/')
‘fileという名前のファイル。txt’は、/Users/test/fileからコピーされたすべてのコンテンツと権限を持つターゲット宛先に作成されます。txt”です。
4. copy2()
copy2()
copy()
copy2()
もソースファイルからメタデータをコピーするという事実を除いて、同じように機能します。p>
import shutilshutil.copy2('/Users/test/file.txt', '/Users/target/')
2. Pythonでファイルをコピーするosモジュール
1. popen()
popen()
メソッドは、コマンド、cmdへのパイプを作成します。 このメソッドは、cmdパイプに接続されたfileオブジェクトを返します。 以下のコードを見て、
#for Windowsimport osos.popen('copy src.txt targ.txt' )
#for Linuximport osos.popen('cp src.txt targ.txt' )
このメソッドでは、ファイルをコピーするだけでなく、他の
2. system()
system()
メソッドは、サブシェル内のコマンド引数を直接呼び出して実行します。 その戻り値は、プログラムを実行するOSによって異なります。 Linuxの場合は終了ステータスですが、Windowsの場合はシステムシェルによる戻り値です。
#for Linuximport osos.system(' cp src.txt targ.txt' )
#for Windowsimport osos.system(' copy src.txt targ.txt' )
3. Pythonでファイルをコピーするサブプロセスモジュール
1. call()
call()
os.system()
に似たメソッドは、関数に引数として渡されたコマンドを直接呼び出すか、実行します。
# In Linuximport subprocesssubprocess.call('cp source.txt target.txt', shell=True)
# In Linuximport subprocesssubprocess.call('cp source.txt target.txt', shell=True)
Leave a Reply