Pythonでファイルやフォルダものコピーや移動等をする方法を、以前紹介しました。
今回は、フォルダ内にある複数のファイルを一括して、他のフォルダに移動する方法を紹介します。
この一連の動作を実現する為に必要な技術は、
- ファイルを移動する技術
- フォルダ内の全ファイルを取得する技術
- for文を使う技術
この3つの技術を組み合わせる事によって、課題の「フォルダ内にある複数のファイルを一括して、他のフォルダに移動する」が、可能になります。
|
Pythonでファイルやフォルダを操作する
Pythonでファイルやフォルダを操作するには
shutilモジュール を使います。
shutilモジュールの機能
shutil.copyfile(src,dst) | ファイルをコピーします。 メタデータはコピーしません。 |
shutil.copystat() | 最終アクセス時間と最終更新時間をコピーします。 |
shutil.copy() | ファイルをファイル又はフォルダにコピーします。パーミッション(権限)もコピーします。 |
shutil.copytree() | フォルダを階層ごとコピーします。 |
shutil.rmtree() | フォルダを階層ごと削除します。 |
shutil.move() | ファイルやフォルダを別の場所に移動します。 |
Pythonでファイルを移動する
Pythonでファイルの移動をするには shutilモジュール の
shutil.move()
を使います。
import shutil
path_dir = "D:/liquidjumper/csv_test.csv"
move_dir = "D:/liquidjumper2/csv_test.csv"
shutil.move(path_dir,move_dir)
説明:
shutil.move()を使ってファイルを移動する場合
shutil.move()の第1引数に元のファイルパス
shutil.move()の第2引数に移動先のファイルパス
を指定します。
実行:
“D:/liquidjumper/”にあったファイル[csv_test.csv]が”D:/liquidjumper2/”に移動しました。
Pythonでフォルダ内の全ファイルを取得
Pythonでフォルダのファイルを取得するには
osモジュール を使います。
osモジュールの機能は
os.listdir() | ファイルとディレクトリの一覧を取得 |
os.path.isfile() | 指定したパスがファイルなのかを判定する |
os.path.isdir() | 指定したパスがディレクトリなのかを判定する |
import os
path_dir = "D:/liquidjumper"
list_file_name = os.listdir(path_dir)
for i_file_name in list_file_name:
join_path = os.path.join(path_dir,i_file_name)
if os.path.isfile(join_path):
print(join_path)
説明:
path_dir = "D:/liquidjumper"
list_file_name = os.listdir(path_dir)
指定したディレクトリ内のファイル・ディレクトリ一覧を取得します。
join_path = os.path.join(path_dir,i_file_name)
os.path.join(ディレクトリパス,ファイル名)で結合します。
if os.path.isfile(join_path):
os.path.isfile()でファイルかどうかを判定して、ディレクトリを除外します。
|
実行:
指定したディレクトリ内の全ファイルのパス名が取得できました。
D:/liquidjumper\csv_test2.csv
D:/liquidjumper\csv_test_e.csv
D:/liquidjumper\csv_test_j.csv
D:/liquidjumper\csv_test_new.csv
D:/liquidjumper\json_file.json
D:/liquidjumper\json_file_new.json
D:/liquidjumper\new_textfile.txt
D:/liquidjumper\textfile_shift_jis.txt
D:/liquidjumper\textfile_utf8.txt
D:/liquidjumper\todofuken.xls
D:/liquidjumper\todofuken.xlsx
D:/liquidjumper\wakayama.xls
Pythonでフォルダ内の複数のファイルを一括で移動する
ディレクトリ内の全ファイルの名前を取得できたので、次はこの全ファイルをshutil.move()を使って別のディレクトに移動したいと思います。
shutil.move()は全ファイルを一度に移動する事はできません。ファイルを一つずつ順番に移動する必要があります。
forで全ファイルを移動
for文を使って、ファイルを一つずつ順番に移動します。
import os
import shutil
path_dir = "D:/liquidjumper"
move_dir = "D:/liquidjumper2"
list_file_name = os.listdir(path_dir)
for i_file_name in list_file_name:
join_path = os.path.join(path_dir,i_file_name)
move_path = os.path.join(move_dir,i_file_name)
if os.path.isfile(join_path):
shutil.move(join_path,move_path)
説明:
join_path = os.path.join(path_dir,i_file_name)
move_path = os.path.join(move_dir,i_file_name)
元のファイルパスと移動先のファイルパス
if os.path.isfile(join_path):
shutil.move(join_path,move_path)
ファイルだと判定されたら、
shutil.move(元のファイルパス,移動先のファイルパス)でファイルを移動します。
実行:
フォルダを残して”D:/liquidjumper”から”D:/liquidjumper2″に全ファイルが移動しました。
まとめ
Pythonでフォルダ内のファイルを一括移動する方法を紹介しました。
この一連の動作を実現する為に、
- ファイルを移動する技術
- フォルダ内の全ファイルを取得する技術
- for文を使う技術
の3つの技術を使いました。
フォルダ内からファイル名を取得する方法や、繰り返し処理の方法など、他にも書き方は沢山あるので試してみてください。
|
自宅からでもWeb制作・プログラミング・アプリ開発などが習得できるさまざまなコースをラインナップ。
非エンジニアでスキルを磨きたい方から、フリーランス、就職/転職を目指す方まで、専属のメンターがサポート。
最近は副業ブームもあり「 はじめての副業コース 」が人気です。
|
|
BTOパソコンの草分け的ブランドFRONTIER(フロンティア) 3DCG/動画編集/ゲーム用途に合わせてCPUやGPUなどパーツを自由に選べてコスパにもこだわる方にオススメ。 |
|
|
|
|
|