import shutil
def copy_file(names,old_name,new_name):
for name in names:
filename = name.split("\\")[-1]
#filename:从路径中团搜拿截取文件名
shutil.copyfile(old_name + filename, new_name + filename)
files = glob.glob(r'漏迹D:/A/1*.txt')
#files : 搜索得到塌搭的符合条件(带有1开头的txt)的文件列表
old_path = r'D:/A/'
new_path = r'D:/B/'
copy_file(files,old_path,new_path)
这个方法不能把物备文件夹复制到文件夹里面去。
10.shutil.copytree('E:\test\good', 'E:\test\vivi')
copytree不能把文件夹复制唤蚂到已存在的文件夹里面去。
11.shutil.copytree('E:\test\good', 'E:\test\new folder')
只罩链毁能复制到新创建的文件夹里面。
有相同名字的文件,就会出错,注意修改文件名。
这是最近写的一个类似代码,你拿去改改哗亩import shutil
import os
import logging
import sys
logger = logging.getLogger(__name__)
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
def cp_or_mv2(src_file, des_dir, is_copy):
print(src_file, des_dir)
if os.path.isfile(src_file):
logger.info(f'from file {src_file}')
if is_copy:
shutil.copy2(src_file, des_dir)
logger.info(f'copy to {des_dir}')
else:
des_file = os.path.join(des_dir, src_file)
shutil.move(src_file, des_file)
logger.info(f'move to {des_file}')
else:
logger.info(f'from dir {src_file}')
des_dir_level1 = os.path.join(des_dir, src_file)
shutil.copytree(src_file, des_dir_level1, dirs_exist_ok=True)
logger.info(f'to {des_dir_level1}')
if not is_copy:
shutil.rmtree(src_file)
logger.info(f'deleted {src_file}')
def process_files_in_txt(txt_file, src_dir, des_dir, is_copy=True):
os.chdir(src_dir)
with open(txt_file, 'r', encoding='utf8', errors='ignore') as f:
for line in f.readlines():
src_file = line.strip()
# logger.info(src_file)
if os.path.exists(src_file):
cp_or_mv2(src_file, des_dir, is_copy)
else:
logger.warning(f'{src_file} missing!')
if __name__ == '__main__'喊缓:
process_files_in_txt(r"D:\D\需要拷贝.txt", # 哪些文件(夹)
r"D:\D\Desktop", # 从哪个文件夹
r"D:\D\新乱渗森建文件夹", # 到哪个文件夹
is_copy=False) # True复制,False剪切
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)