Udemyでもプログラミングを教えていますUdemy

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

  • URLをコピーしました!
目次

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

ここでは 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(“移動先”, “コピー先”)

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次