【Python】OS、shutilモジュールでファイルを操作する

ファイルをコピー/削除/移動する

ここでは Python を使って、 ファイルをコピー/削除/移動する方法を説明します。
pandasを利用した新規保存で 「Excelファイルを移動」できますが、もっと直接的にファイルをコピー/削除/移動する方法もあります。
Pythonのos、shutil、 pathlib などのモジュールに、 ファイル操作関連のさまざまな関数/メソッドが用意されています。

YouTubeでより深く学んでいただけけます。

これらを使えば、ファイルの種類を問わずに操作することが可能です。 今回はosとshutilを中心にファイルの操作方法を説明します。
ファイル操作のサンプルを用意したので、試してみてください。

サンプルファイル

file_operation.py
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 を指定すると、エラーを回避できます。

hachi
同名のフォルダの中にファイルがあったら、上書きして消えたりしないんでしょうか?

 

haruki
大丈夫、 ファイルが消えたりはしませんよ。 その場合はフォルダを作成せずに既存のものを使うだけです。

ファイルを移動/コピーする方法はいくつかあり、 ここでは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(“移動先”, “コピー先”)

最新情報をチェックしよう!
>プログラミング 独学

プログラミング 独学

本当にプログラミングを学びたい人のためになるブログにしたいと思っていますので、些細なことでも気が付いたのであればご報告いただけると幸いです。

CTR IMG