最近写了个爬虫,保存中间数据的文件太多了,想要只复制得到的结果文件,就写了这样的一个程序,把结果文件提取复制出来
需求分析:把文件夹内所有特定格式的的文件复制提取出来。(包括子文件夹里的文件)
代码思路:当作树形结构来递归遍历,文件为子节点。
功能:
①、把特定格式的文件提取出来,
②、 文件名中带有特定字符串的文件提取出来,
[Python] 纯文本查看 复制代码 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)
|