$ 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()
函數來複製檔案到目標路徑。