$ python --version
Python 3.9.0
$ pyenv --version
pyenv 1.2.27
下記のようなファイル構成をフォルダ内のファイルをファイルタイプ別に整理してみる。
files/
- txt1.txt
- csv1.csv
- txt2.txt
- csv2.csv
- txt3.txt
- csv3.csv
- txt4.txt
- csv4.csv
- txt5.txt
- csv5.csv
期待する結果はこんな感じです。
reorganization/
- txt/
- txt1.txt
- txt2.txt
- txt3.txt
- txt4.txt
- txt5.txt
- csv/
- csv1.csv
- csv2.csv
- csv3.csv
- csv4.csv
- csv5.csv
import os
import shutil
try:
path = "./reorganization"
if not(os.path.isdir(path)):
os.mkdir(path)
list = os.listdir("./files")
for index, value in enumerate(list):
(name, ext) = os.path.splitext(value)
type_folder_path = f"{path}/{ext[1:]}"
if not(os.path.isdir(type_folder_path)):
os.mkdir(type_folder_path)
shutil.copyfile(f"./files/{value}", f"{type_folder_path}/{value}")
except OSError:
print (f"Failed" )
else:
print (f"Success")
os.path.isdir()
関数でフォルダが存在しているかを確認する。
path = "./reorganization"
if not(os.path.isdir(path)):
os.mkdir(path)
os.listdir()
関数でフォルダ内のファイルリストを取得する。
list = os.listdir("./files")
for index, value in enumerate(list):
#...
os.path.splitext()
関数でファイルタイプを取得する。
shutil.copyfile()
関数で目標パスにコピーを作成する。
for index, value in enumerate(list):
(name, ext) = os.path.splitext(value)
type_folder_path = f"{path}/{ext[1:]}"
if not(os.path.isdir(type_folder_path)):
os.mkdir(type_folder_path)
shutil.copyfile(f"./files/{value}", f"{type_folder_path}/{value}")
os.path.isdir()
関数でフォルダが存在しているかを確認する。os.listdir()
関数でフォルダ内のファイルリストを取得する。os.path.splitext()
関数でファイルタイプを取得する。shutil.copyfile()
関数で目標パスにコピーを作成する。