ファイルをコピー/削除/移動する
ここでは Python を使って、 ファイルをコピー/削除/移動する方法を説明します。
pandasを利用した新規保存で 「Excelファイルを移動」できますが、もっと直接的にファイルをコピー/削除/移動する方法もあります。
Pythonのos、shutil、 pathlib などのモジュールに、 ファイル操作関連のさまざまな関数/メソッドが用意されています。
YouTubeでより深く学んでいただけけます。
これらを使えば、ファイルの種類を問わずに操作することが可能です。 今回はosとshutilを中心にファイルの操作方法を説明します。
ファイル操作のサンプルを用意したので、試してみてください。
サンプルファイルのダウンロード
import os
import shutil
# ディレクトリの作成
os.makedirs("移動先", exist_ok=True)
os.makedirs("コピー先", exist_ok=True)
# ファイルのコピー
shutil.copy2("コピー.xlsx", "コピー先")
# ファイルの移動
if not os.path.exists("移動先/移動.xlsx"):
shutil.move("移動.xlsx", "移動先")
# ファイルの削除
os.remove("削除.xlsx")
実行過程
1、いくつかのファイルがある
2、プログラムを実行
3 、移動.xlsxと削除.xlsxl が消え、フォルダが2つ作成された
4、「コピー先」 フォルダ内にコピー.xlsxがコピーされている
5、「移動先」 フォルダ内に移動.xlsxが移動している
プログラムの解説
osモジュールは、osの機能を呼び出すモジュールで、 ファイル操作やosのユーザー関連の情報取得などを行えます。 今回はosモジュールのmakedirs関数を呼び出して、2つのフォルダを作成しています。
同名のフォルダがすでにある場合はエラーが発生しますが、 引数 exist_ok に True を指定すると、エラーを回避できます。
ファイルを移動/コピーする方法はいくつかあり、 ここではshutilモジュールの copy2 関数と move 関数を利用しています。
どちらも第1引数に移動/コピー対象のファイルを、 第2引数に移動/コピー先を指定します。 次のように第2引数にファイル名まで書くと、移動/コピー時にファイル名を変えることもできます。
shutil.copy2(“コピー.xlsx”,”コピー先/コピー2.xlsx”)
shutil.move(“移動先”, “移動先/移動2.xlsx”)
最後に osモジュールの remove 関数でファイルを削除しています。引数は削除したいファイルです。
shutil.move 関数は、 移動先に同名のファイルが存在しているとエラーになるのですが、 exists 関数を組み合わせて使えば、エラーを避けられます。
os.path.exists 関数で移動先のファイルをチェックし、 存在している場合はTrue を返すので、 not演算子で反転すれば、 「存在しないときのみ移動」 させることができます。
移動先をチェックしてからファイルを移動
if not os.path.exists(“移動先/移動.xlsx”):shutil.move(“移動.xlsx”, “移動先”)
shutil.move(“移動先”, “コピー先”)