python實現移動二級目錄下的檔案到一級目錄
阿新 • • 發佈:2022-12-07
python實現移動二級目錄下的檔案到一級目錄
import os import shutil import sys def move_to_work_folder(work_path, cur_path): """ 將work_folder下的所有子目錄中的檔案移到根目錄中: :param work_path: 當前工作目錄 :param cur_path: 檔案所在目錄 :return: """ for filename in os.listdir(cur_path): if os.path.isfile(os.path.join(cur_path, filename)): shutil.move(os.path.join(cur_path, filename), os.path.join(work_path, filename)) elif os.path.isdir(os.path.join(cur_path, filename)): move_work_folder(work_path, os.path.join(cur_path, filename)) else: sys.exit("Should never reach here.") # remove empty folders if cur_path != work_path: os.rmdir(cur_path) def move_to_up_folder(subpath, work_path, same_dirs): """ 將工作目錄中的二級子目錄下的檔案或目錄移到當前工作目錄,並刪除舊的二級子目錄內容。 :param subpath:二級目錄 :param work_path:當前工作目錄 :param same_dirs:工作目錄下相同目錄名稱 :return: """ # 確認工作目錄下是否存在相同目錄 same_dir_path = os.path.join(work_path, same_dirs) if os.path.exists(same_dir_path): print("工作目錄中存在相同目錄: {}".format(same_dir_path)) # 若存在相同目錄,拷貝當前二級目錄的子目錄到工作目錄下同名目錄中 for thirdir in os.listdir(subpath): shutil.move(os.path.join(subpath, thirdir), same_dir_path) os.rmdir(subpath) else: shutil.move(subpath, work_path) if __name__ == '__main__': root_path = os.getcwd() for subdirname in os.listdir(root_path): # 遍歷當前資料夾下的二級目錄名 if os.path.isdir(os.path.join(root_path, subdirname)): # 得到當前資料夾下的二級目錄完整路徑 subdirpath = os.path.join(root_path, subdirname) # 遍歷二級目錄下的檔案 for name in os.listdir(subdirpath): # 匯入二級目錄下的檔案、當前工作目錄的完整路徑到move_to_up_folder函式中 move_to_up_folder(os.path.join(subdirpath, name), root_path, name) os.rmdir(subdirname)