鱼C论坛

 找回密码
 立即注册
查看: 2992|回复: 1

[技术交流] 本地文件批量复制助手

[复制链接]
发表于 2020-12-6 19:39:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. import easygui as gui
  2. import os
  3. from threading import Thread

  4. #该代码用于:通过读取一个包含某一目录下文件名的TXT文件,选择目标文件夹,以及选择保存路径(保存路径中不能已经存在TXT中的同名文件),批量复制文件

  5. def get_path_list(id_path,src,target):
  6.     with open(id_path) as txt:
  7.         id_str = txt.read()
  8.     list1 = id_str.split('\n')
  9.     id_list = list(filter(None,list1))
  10.     src_dir_list = os.listdir(src)
  11.     #找出文件夹中所有在TXT中的文件
  12.     file_list = list(set(id_list)&set(src_dir_list))
  13.     src_path_list = []
  14.     target_path_list = []
  15.     for file in file_list:
  16.         src_path_list.append(os.path.join(src,file))
  17.         target_path_list.append(os.path.join(target,file))
  18.     return src_path_list,target_path_list

  19. def fail(id_path,src):
  20.     with open(id_path) as txt:
  21.         id_str = txt.read()
  22.     list1 = id_str.split('\n')
  23.     id_list = list(filter(None,list1))
  24.     src_dir_list = os.listdir(src)
  25.     file_list = list(set(id_list)&set(src_dir_list))
  26.     fail_list = list(set(id_list)^set(file_list))
  27.     if fail_list:
  28.         faildownload_path = os.path.dirname(id_path) + '\\faildownload.txt'
  29.         gui.msgbox('注意!!!\n详情请查看 faildownload.txt 文件!!!')
  30.         with open(faildownload_path,'a') as f:
  31.             for each in fail_list:
  32.                 f.write('\n' + each)
  33.             f.write('\n该文件夹中未找到以上图片')

  34. def copy_function(src_path,target_path):
  35.     if os.path.isdir(src_path) and os.path.isdir(target_path):
  36.         filelist = os.listdir(src_path)
  37.         for file in filelist:
  38.             path = os.path.join(src_path,file)
  39.             if os.path.isdir(path):   #判断是否为文件夹
  40.                 target1 = os.path.join(target_path,file)
  41.                 os.mkdir(target1) #在目标文件下在创建一个文件夹
  42.                
  43.                 copy_function(path,target1)
  44.             else:
  45.                 with open(path, 'rb') as temp:
  46.                     container = temp.read()
  47.                     path1 = os.path.join(target_path, file)
  48.                     with open(path1, 'wb') as f:
  49.                         f.write(container)
  50.         else:
  51.             
  52.             print('复制完毕!')

  53. if __name__ == "__main__":
  54.     id_path = gui.fileopenbox('选择Panel ID.txt文件',default="*.txt")
  55.     src = gui.diropenbox('图片文件夹路径选择')
  56.     target = gui.diropenbox('保存路径选择')
  57.     try:
  58.         path_list = get_path_list(id_path,src,target)
  59.         nums = len(path_list[0])
  60.         threads = []
  61.         for each in range(nums):
  62.             src_path = path_list[0][each]
  63.             target_path = path_list[1][each]
  64.             os.mkdir(target_path)
  65.             t = Thread(target = copy_function,args=(src_path,target_path))
  66.             t.start()
  67.             threads.append(t)
  68.         for thread in threads:
  69.             thread.join()
  70.         gui.msgbox('复制完成')   
  71.         fail(id_path,src)
  72.     except:
  73.         gui.msgbox('复制失败')
复制代码

copyfile.rar

1.16 KB, 下载次数: 3

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-6 20:19:45 | 显示全部楼层
建议加上隐藏,不然大概率沉贴
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-30 19:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表