Python實現指定目錄拷貝文件與移動文件

此代碼拷貝過去可以直接能用。

"""
參考文章 https://blog.csdn.net/longshaonihaoa/article/details/105679517
"""


# -*- coding:utf-8 -*-
import os
import shutil
#from glob import glob
class File():
    
    def __init__(self):
        self.fileList = []

    """
    遞歸列表文件
    """
    def recursion_file(self, filepath):
        files = os.listdir(filepath)
        for file in files:
            fi_d = os.path.join(filepath, file)
            if os.path.isdir(fi_d):
                self.recursion_file(fi_d)
            else:
                self.fileList.append(fi_d)

    """
    獲取文件列表
    """
    def get_file_list(self, filepath):
        self.recursion_file(filepath)
        return self.fileList


#指定文件路徑獲取文件最後文件的路徑包含文件
#如:D:\test\file.txt 返回的結果爲:file.txt
def get_file_name(path):
    return os.path.basename(path)
    
   
# 創建目錄
def mkdir(path):
    # 去除尾部 \ 符號 
    pathx = path.strip().rstrip("\\")
    #print(f'pathx={pathx}')
    
    # 判斷路徑是否存在
    # 存在     True
    # 不存在   False
    isExists = os.path.exists(pathx)
    # 判斷結果
    if not isExists:
        # 如果不存在則創建目錄創建目錄操作函數
        os.makedirs(path)
        print(path + ' 創建成功')
        return True
    else:
        # 如果目錄存在則不創建,並提示目錄已存在
        print(path + ' 目錄已存在')
        return False

#移動文件,移動文件比拷貝文件速度快
#src_dir 指定要拷貝或者移動文件的源目錄
#dst_dir 指定要拷貝或者移動文件的目標目錄
#flag True爲拷貝,False 代表移動
def copy_or_copy_files(src_dir,dst_dir,flag):

    fileObj = File()
    #指定新的路徑不存在就創建
    mkdir(dst_dir)
    for file_path in fileObj.get_file_list(src_dir):
        if(flag==True):
            shutil.copy(file_path, dst_dir+'\\' + get_file_name(file_path))   
        else:
            shutil.move(file_path, dst_dir+'\\' + get_file_name(file_path))
           
   

# __main__方法
if __name__ == '__main__':
    src_dir = r'D:\test'
    dst_dir = r'D:\test\new'

    # 複製文件
    copy_or_copy_files(src_dir, dst_dir,False)                      
    
    print('拷貝或者移動文件完成....')
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章