Python Pythonでフォルダ内の全ファイルを一括移動[プログラミング学習]

Pythonでフォルダ内の全ファイルを一括移動[プログラミング学習]

python_move_files_topimage

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/”に移動しました。

[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″に全ファイルが移動しました。

"D:/liquidjumper2"に全ファイルが移動

まとめ

Pythonでフォルダ内のファイルを一括移動する方法を紹介しました。

この一連の動作を実現する為に、

  • ファイルを移動する技術
  • フォルダ内の全ファイルを取得する技術
  • for文を使う技術

の3つの技術を使いました。

フォルダ内からファイル名を取得する方法や、繰り返し処理の方法など、他にも書き方は沢山あるので試してみてください。


3DCAD/3DCG/動画編集/ゲーム開発向けクリエイターPCを低下価格で購入できるFRONTIER
最新GPUも格安構成も自由に選べる!パソコン買うならBTOの【FRONTIER】


Twitter Facebook Pocket LINE はてブ

おすすめの関連記事
コチラの記事も読まれています
あわせてよく読まれている記事