目次
はじめに
shutil
モジュールのcopyfile
, copy
, copy2
を使用し、ファイル一覧を取得します。
copyfile関数を使ったファイルコピー
shutil.copyfile(src, dst, *, follow_symlinks=True)
dstは書き込み可能でなければなりません。そうでない場合、OSError
例外を送出します。dst がすでに存在する場合、そのファイルは置き換えられます。srcがシンボリックリンクの場合、リンク先をコピーします。
copy関数を使ったファイルコピー
shutil.copy(src, dst, *, follow_symlinks=True)
copy
関数はデータとパーミッション(Permission)をコピーします。
copy2関数を使ったファイルコピー
shutil.copy2(src, dst, *, follow_symlinks=True)
copy2
関数はデータとパーミッション(Permission)及び、メタデータをコピーします。
コード
import shutil
import glob
print(glob.glob('./*.txt'))
shutil.copyfile('aaa.txt', 'bbb.txt') # <-- copyfile関数
shutil.copy('aaa.txt', 'ccc.txt') # <-- copy関数
shutil.copy2('aaa.txt', 'ddd.txt') # <-- copy2関数
print(glob.glob('./*.txt'))
実行結果
['./aaa.txt']
['./aaa.txt', './bbb.txt', './ccc.txt', 'ddd.txt']
$ ls -la
-rw-rw-rw- 1 py staff 12 12 31 23:51 aaa.txt
-rw-r--r-- 1 py staff 12 12 31 23:55 bbb.txt # <-- copyfile関数の実行結果
-rw-rw-rw- 1 py staff 12 12 31 23:55 ccc.txt # <-- copy関数の実行結果
-rw-rw-rw- 1 py staff 12 12 31 23:51 ddd.txt # <-- copy2関数の実行結果
copyfile
, copy
, copy2
はそれぞれファイルをコピー(データコピー)をしますが、パーミッション(ファイルのアクセス権限)や、メタデータ(作成日時、更新日時)をコピーするかどうかの違いがあります。
- copyfile
- ファイルのデータコピー
- copy
- ファイルのデータコピー
- パーミッションのコピー
- copy2
- ファイルのデータコピー
- パーミッションのコピー
- メタデータのコピー
おわりに
OSによっては、メタデータのコピー内容に差がありますので、確認が必要です。
[A8_TechAcademy065]
[Footer]