rsj0315 发表于 2020-9-14 09:27:03

合并一个文件夹内文件的问题

一个文件夹内有很多个txt文件。
Txt文件的命名规则是日期-1,比如今天得第一个20200914-1,第二个20200914-2以此类推。
每天会有几个文件不等。

现在想解决的问题逻辑是,如何快速的找到近30天内的文件。再然后进行批量合并

我的想法是先拿到文件的名字,然后取出时间。
再和今天日期对比,在时间范围,就进行合并,不知道这样循环会不会太影响效率,各位有啥好的建议么?

bonst 发表于 2020-9-14 09:30:32

我发过一个帖子,就是这个txt合并的,可以看看

bonst 发表于 2020-9-14 09:47:13

就是这个-小说章节合并,可参考或优化
https://fishc.com.cn/thread-179322-1-1.html
(出处: 鱼C论坛)

疾风怪盗 发表于 2020-9-14 10:48:14

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文件

rsj0315 发表于 2020-9-14 14:28:51

疾风怪盗 发表于 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:44:22

本帖最后由 疾风怪盗 于 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]
查看完整版本: 合并一个文件夹内文件的问题