1. 程式人生 > 其它 >python實現移動二級目錄下的檔案到一級目錄

python實現移動二級目錄下的檔案到一級目錄

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)