鱼C论坛

 找回密码
 立即注册
查看: 3018|回复: 17

[已解决]快速按顺序合并txt文件

[复制链接]
发表于 2020-5-20 14:15:09 | 显示全部楼层 |阅读模式
30鱼币
问题:爬虫爬取的小说有很多章节,如何按照顺序整成一个txt

原本使用的是cmd命令
所有txt合并
type *.txt >>C:\Users\yonghu\Desktop\txt\hebing.txt
但是发现虽然按名称排序,但是小说无法按章节顺序显示
最佳答案
2020-5-20 14:15:10
本帖最后由 Twilight6 于 2020-5-20 18:18 编辑

  1. import os

  2. start = int(input(r'请输入你要合并的txt文件编号:'))
  3. path = input(r'请输入txt文件夹路径:')
  4. count = int(input(r'请输入你要合并到第几个txt文件?'))


  5. file_name_list = os.listdir(path)
  6. file_num = []
  7. file_name = []

  8. for i in file_name_list:

  9.     if '.txt' in i and '、' in i:
  10.         number,temp = i.split('、',1)
  11.         file_num.append(int(number))
  12.         file_name.append(i)

  13. number_list = []
  14. name_list = []
  15. for i in file_name:
  16.     number,temp = i.split('、',1)
  17.     number_list.append(number[1:])
  18.     name_list.append(i)
  19. file_name = sorted(list(zip(number_list,name_list)),key= lambda x:int(x[0]))



  20. with open(path+os.sep+file_name[start-1][1],'a',encoding='utf-8') as f:
  21.     while start < count:
  22.         with open(path+os.sep+file_name[start][1],encoding='utf-8') as f1:
  23.             txt = f1.read()
  24.             f.write(txt+'\n')
  25.         start += 1
复制代码

效果如图:
GIF.gif

QQ截图20200520141357.png

最佳答案

查看完整内容

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

使用道具 举报

发表于 2020-5-20 14:15:10 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-5-20 18:18 编辑

  1. import os

  2. start = int(input(r'请输入你要合并的txt文件编号:'))
  3. path = input(r'请输入txt文件夹路径:')
  4. count = int(input(r'请输入你要合并到第几个txt文件?'))


  5. file_name_list = os.listdir(path)
  6. file_num = []
  7. file_name = []

  8. for i in file_name_list:

  9.     if '.txt' in i and '、' in i:
  10.         number,temp = i.split('、',1)
  11.         file_num.append(int(number))
  12.         file_name.append(i)

  13. number_list = []
  14. name_list = []
  15. for i in file_name:
  16.     number,temp = i.split('、',1)
  17.     number_list.append(number[1:])
  18.     name_list.append(i)
  19. file_name = sorted(list(zip(number_list,name_list)),key= lambda x:int(x[0]))



  20. with open(path+os.sep+file_name[start-1][1],'a',encoding='utf-8') as f:
  21.     while start < count:
  22.         with open(path+os.sep+file_name[start][1],encoding='utf-8') as f1:
  23.             txt = f1.read()
  24.             f.write(txt+'\n')
  25.         start += 1
复制代码

效果如图:
GIF.gif

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

使用道具 举报

发表于 2020-5-20 14:21:51 | 显示全部楼层
os.walk
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-20 14:23:28 | 显示全部楼层

第一章
xxxx
xx
第二章
xxx
xx
......
这样合并吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-20 14:23:50 | 显示全部楼层

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

使用道具 举报

发表于 2020-5-20 14:24:18 | 显示全部楼层

骚等 我试着写写
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-20 14:54:30 | 显示全部楼层

  1. #coding=utf-8
  2. import os
  3. #获取目标文件夹的路径
  4. filedir = os.getcwd()+'/yuliao'
  5. #获取当前文件夹中的文件名称列表  
  6. filenames=os.listdir(filedir)
  7. #打开当前目录下的result.txt文件,如果没有则创建
  8. f=open('result.txt','w')
  9. #先遍历文件名
  10. for filename in filenames:
  11.     filepath = filedir+'/'+filename
  12.     #遍历单个文件,读取行数
  13.     for line in open(filepath):
  14.         f.writelines(line)
  15.     // f.write('\n')
  16. #关闭文件
  17. f.close()
复制代码
供参考
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-20 15:28:59 | 显示全部楼层

你这样不行的 W 打开模式直接把原本的文本给覆盖了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-20 15:33:31 | 显示全部楼层

条件你如果以后需求有变自己改改把 这里只适合 txt 文件名格式是  
  1. 数值、xxxxx.txt
复制代码

这样的文件格式,比如:
  1. 1、xxxx.txt
  2. 2、aaaa.txt
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-20 15:33:40 | 显示全部楼层

C:\Users\Administrator\Desktop\QQ截图20200520153311.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-20 15:34:39 | 显示全部楼层


我头像可以临时QQ对话的 你试着点下,图片不是这样发的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-20 15:36:05 | 显示全部楼层

效果还差一点啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-20 15:37:09 | 显示全部楼层

你要的不是这个效果???
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-20 15:43:29 | 显示全部楼层
你把1-9加上0就好了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-20 15:48:01 | 显示全部楼层
塔利班 发表于 2020-5-20 15:43
你把1-9加上0就好了

鬼才,1000多章,手动太累了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-20 15:51:09 | 显示全部楼层
熊顺祥 发表于 2020-5-20 15:48
鬼才,1000多章,手动太累了

1000多张,就写个Python代码0001-1xxx来rename下
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-20 15:51:23 | 显示全部楼层

大佬,filenames=os.listdir(filedir)这句话从文件夹中读出来的不是顺序的,
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-20 18:05:04 | 显示全部楼层
Twilight6 发表于 2020-5-20 15:28
你这样不行的 W 打开模式直接把原本的文本给覆盖了

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-19 19:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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