kafei000 发表于 2021-12-5 19:28

复制提取文件夹内特定格式的文件

最近写了个爬虫,保存中间数据的文件太多了,想要只复制得到的结果文件,就写了这样的一个程序,把结果文件提取复制出来
需求分析:把文件夹内所有特定格式的的文件复制提取出来。(包括子文件夹里的文件)
代码思路:当作树形结构来递归遍历,文件为子节点。

功能:
①、把特定格式的文件提取出来,
②、 文件名中带有特定字符串的文件提取出来,

import os

class copyfiles(object):

    # 创建文件夹
    def mkdirs(self, path):
      if not os.path.exists(path):
            os.makedirs(path)

    # 复制单个文件文件到新文件夹,
    def copy(self, path1, path2):
      if os.path.exists(path2):
            print(f"{path2} 文件已经存在")
            return 0
      else:
            with open(path1, 'rb') as f:
                content = f.read()
            with open(path2, 'wb') as f_copy:
                f_copy.write(content)
            print(f"{path2} 文件复制完成")

    def copys(self, path1, path2, keywords=[]):
      '''
      :功能: 复制path1文件夹下所有满足条件的文件复制到新的文件夹path2下
      :param path1: 源文件夹
      :param path2: 文件复制到的新文件夹
      :param keyword: 筛选关键词, 默认为[], 此时选择所有文件
      :return:
      '''
      self.mkdirs(path2)

      for name in os.listdir(path1):
            child_old = os.path.join(path1, name)
            child_new = os.path.join(path2, name)
            # 复制文件夹
            if os.path.isdir(child_old):
                self.mkdirs(child_new)
                self.copys(child_old, child_new, keywords)
            # 复制文件
            else:
                if len(keywords) == 0:
                  print(keywords)
                  self.copy(child_old, child_new)
                else:
                  for i in keywords:
                        if i in name:
                            self.copy(child_old, child_new)


if __name__ == '__main__':
    path_old = '.\申论'      # 要复制的文件夹
    path_new = '.\源文件\申论'    # 新文件夹
    keywords = ['html', '.text', '.json']      # 筛选依据的关键词

    A = copyfiles()
    A.copys(path_old, path_new, keywords)


开始123 发表于 2021-12-5 19:34

这个写的真不错

dleo 发表于 2021-12-5 20:31

everything 会不会更方便一点

kafei000 发表于 2021-12-5 20:51

dleo 发表于 2021-12-5 20:31
everything 会不会更方便一点

everything 还有这功能吗

OrData 发表于 2021-12-5 21:22

是啊,感觉everything筛选的确很容易实现,但复制得自己操作了。

愚无尽 发表于 2021-12-5 21:22

kafei000 发表于 2021-12-5 20:51
everything 还有这功能吗

everything的功能远不止如此

Wapj_Wolf 发表于 2021-12-6 07:34

以前还没用过everything呢,又学习到了。

biostu 发表于 2021-12-6 08:57

everything 的功能其实很强大,需要慢慢挖掘。

shinexieonline 发表于 2021-12-6 09:08

感谢楼主发布优秀作品

帅得心里烦 发表于 2021-12-6 09:50

这个写的真不错
页: [1] 2
查看完整版本: 复制提取文件夹内特定格式的文件