ファイル操作

【Python】ファイル操作:ファイルをコピーする(copyfile, copy, copy2)

はじめに

shutilモジュールのcopyfilecopycopy2を使用し、ファイル一覧を取得します。

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)及び、メタデータをコピーします。

コード

Python
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によっては、メタデータのコピー内容に差がありますので、確認が必要です。

この記事がお役に立てましたら幸いです。
人気ブログランキングに参加しております。
よろしければクリックしていただけると嬉しいです。
にほんブログ村 IT技術ブログ Pythonへ
※本サイトに掲載する情報には充分に注意を払っておりますが、その内容について保証するものではありません。
※本サイトの使用ならびに閲覧によって生じたいかなる損害にも責任を負いかねます。

コメント

タイトルとURLをコピーしました