此代碼拷貝過去可以直接能用。
"""
參考文章 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('拷貝或者移動文件完成....')