鱼C论坛

 找回密码
 立即注册
查看: 2622|回复: 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 编辑

import os

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


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

for i in file_name_list:

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

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



with open(path+os.sep+file_name[start-1][1],'a',encoding='utf-8') as f:
    while start < count:
        with open(path+os.sep+file_name[start][1],encoding='utf-8') as f1:
            txt = f1.read()
            f.write(txt+'\n')
        start += 1
效果如图:
GIF.gif

QQ截图20200520141357.png

最佳答案

查看完整内容

效果如图:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

import os

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


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

for i in file_name_list:

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

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



with open(path+os.sep+file_name[start-1][1],'a',encoding='utf-8') as f:
    while start < count:
        with open(path+os.sep+file_name[start][1],encoding='utf-8') as f1:
            txt = f1.read()
            f.write(txt+'\n')
        start += 1
效果如图:
GIF.gif

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-20 14:21:51 | 显示全部楼层
os.walk
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

第一章
xxxx
xx
第二章
xxx
xx
......
这样合并吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

对的,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

骚等 我试着写写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-20 14:54:30 | 显示全部楼层
#coding=utf-8 
import os
#获取目标文件夹的路径
filedir = os.getcwd()+'/yuliao'
#获取当前文件夹中的文件名称列表  
filenames=os.listdir(filedir)
#打开当前目录下的result.txt文件,如果没有则创建
f=open('result.txt','w')
#先遍历文件名
for filename in filenames:
    filepath = filedir+'/'+filename
    #遍历单个文件,读取行数
    for line in open(filepath):
        f.writelines(line)
    // f.write('\n')
#关闭文件
f.close()
供参考
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

你这样不行的 W 打开模式直接把原本的文本给覆盖了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

条件你如果以后需求有变自己改改把 这里只适合 txt 文件名格式是  
数值、xxxxx.txt
这样的文件格式,比如:
1、xxxx.txt
2、aaaa.txt
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

C:\Users\Administrator\Desktop\QQ截图20200520153311.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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


我头像可以临时QQ对话的 你试着点下,图片不是这样发的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

效果还差一点啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

你要的不是这个效果???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-20 15:43:29 | 显示全部楼层
你把1-9加上0就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

鬼才,1000多章,手动太累了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

1000多张,就写个Python代码0001-1xxx来rename下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

大佬,filenames=os.listdir(filedir)这句话从文件夹中读出来的不是顺序的,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

多谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-21 06:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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