ここではPythonにおいて、複数のファイルを任意のフォルダに移動させるプログラムについて解説しています。
行ったこと
個人のローカルでとあるフォルダ内に何でもかんでもデータを放り込んでおり、どえらい数になっていたので、「.xlsx」ファイルだけを任意のフォルダに移動させるという整理をPythonで行いました。
プログラム
import os
import shutil
import glob
#1---フォルダの作成
new_folder = '00-Excel'
if not os.path.exists(new_folder):
os.mkdir(new_folder)
#2---xlsxファイルの一覧を取得
files = glob.glob('*.xlsx')
#3---既存のファイルを移動
for i in files:
shutil.move(str(i), str(new_folder))
上記がプログラムになります。
それでは解説していきます。
#1---フォルダの作成
new_folder = '00-Excel'
if not os.path.exists(new_folder):
os.mkdir(new_folder)
1の部分では移動先の新しいフォルダを作成しています。if構文で作成するフォルダが存在しない場合に新しく作成するようにしています。
#2---xlsxファイルの一覧を取得
files = glob.glob('*.xlsx')
2の部分では移動させたい拡張子「.xlsx」のファイル一覧を取得しています。拡張子を変えることで他のものも一括で移動させることが可能です。例えば「.png」とするとpngを全て取得することになります。
#3---既存のファイルを移動
for i in files:
shutil.move(str(i), str(new_folder))
3の部分では存在するファイルを全て移動させています。for構文とすることで2の部分で取得したファイルを一つずつ移動させています。
結果
結果です。
「.xlsx」ファイルが全くありませんでした。
整理しなければならなかったのは、「.png」や「.py」というオチでした。そうは言っても整理できたので良かったと思いたいです。
Cronなどで自動化することで定期的に整理できそうなので、皆さんも是非使用してみて下さい。
関数化して複数拡張子の振り分け
import os
import shutil
import glob
#1---フォルダの作成
def huriwake(floder_names):
new_folder = floder_names
if not os.path.exists(new_folder):
os.mkdir(new_folder)
#2---ファイルの一覧を取得
if floder_names == '00-Python':
files = glob.glob('*.py')
elif floder_names == '01-Batch':
files = glob.glob('*.bat')
elif floder_names == '02-CSV':
files = glob.glob('*.csv')
elif floder_names == '03-Excel':
files = glob.glob('*.xlsx')
else:
pass
#3---既存のファイルを移動
for i in files:
shutil.move(str(i), str(new_folder))
huriwake('00-Python')
huriwake('01-Batch')
huriwake('02-CSV')
huriwake('03-Excel')
上記は関数化して拡張子ごとに振り分けするプログラムです。
関数とすることで任意の拡張子を簡単に追加、削除できるようにしました。
追加する場合はelifで条件を決めて、関数で呼び出すだけです。