合并一个文件夹内文件的问题
一个文件夹内有很多个txt文件。Txt文件的命名规则是日期-1,比如今天得第一个20200914-1,第二个20200914-2以此类推。
每天会有几个文件不等。
现在想解决的问题逻辑是,如何快速的找到近30天内的文件。再然后进行批量合并
我的想法是先拿到文件的名字,然后取出时间。
再和今天日期对比,在时间范围,就进行合并,不知道这样循环会不会太影响效率,各位有啥好的建议么? 我发过一个帖子,就是这个txt合并的,可以看看 就是这个-小说章节合并,可参考或优化
https://fishc.com.cn/thread-179322-1-1.html
(出处: 鱼C论坛)
import os,subprocess
import datetime
def Check_filetime(file_name):
try:
file_time = file_name.split('-')
file_time = datetime.date(int(file_time), int(file_time), int(file_time))
#print(file_time)
now_date = datetime.datetime.today()
now_date = datetime.date(now_date.year, now_date.month, now_date.day)
#print(now_date)
delta = now_date - file_time
if delta.days < 30:
return True
else:
return False
except:
return False
file_path = r'D:\python\test\1'
file_names = os.listdir(file_path)
print(file_names)
copy_list=
copy_str=''
for i in copy_list:
copy_str=copy_str+'+'+i
#print(copy_str)
shell_str = f'copy/b {file_path}+\{copy_str} ' + file_path+'\合并后的文件.txt'
print(shell_str)
subprocess.call(shell_str, shell=True)# 调用cmd合并所有ts文件 疾风怪盗 发表于 2020-9-14 10:48
最后一行的调用貌似有点问题,测试后,合并的是文件内所有文件。
因为层主第24行给出来的copy_list是筛选好的列表,我重新定义了一个函数,来循环读他拿到内容,后边在去写就可以了。
def copytxt(path):
text = []
for i in range(len(path)):
datapath = os.path.join(file_path,path )
print(datapath)
with open(datapath,'r') as f:
lines=f.readlines()
text.append(lines)
print(text)
savepath = os.path.join(file_path,'all.txt' )
print(savepath)
with open(savepath,'w') as f1:
for i in text:
f1.write(str(i)+'\n')
copytxt(copy_list) 本帖最后由 疾风怪盗 于 2020-9-14 14:51 编辑
路径拼接错了,改成这样可以了
copy_list=
copy_str=''
for i in copy_list:
copy_str=copy_str+'+'+i
#print(copy_str)
shell_str = f'copy/b {copy_str} ' + file_path+r'\all.txt'
print(shell_str)
subprocess.call(shell_str, shell=True)# 调用cmd合并所有ts文件
页:
[1]