前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python按章节分割小说txt文件

python按章节分割小说txt文件

作者头像
皇上得了花柳病
发布2020-05-04 21:25:28
4.2K0
发布2020-05-04 21:25:28
举报
文章被收录于专栏:小辰的技术分享
代码语言:javascript
复制
# -*- coding: utf-8 -*-
# __author__:'Administrator'
# @Time    : 2018/8/31 14:19
import os
dst = "D:\\test"   # 生成文件目录


# 将一个txt文件的内容,按照第几章进行分割
def SplitFile(file_path1, dst):
    with open(file_path1, 'rb') as f1:
        # 获取文件每一行
        lines1 = f1.readlines()
        # 获取file的名称
        file_dir1 = file_path1.replace("\\", '/').split("/")[-1].split(".")[0]
        path1 = os.path.join(dst, file_dir1)
        if not os.path.exists(path1):
            os.makedirs(path1)
        i = 1
        for line in lines1:
            try:
                if ("第" in line and "章 " in line) or ("第" in line and "章..." in line) or ("第" in line and "章\r\n" in line):
                    name = line.strip().decode('utf8')
                    i += 1
                else:
                    fp = open(file_name1, 'ab+')
                    fp.write(line)
                    fp.close()
                file_name1 = os.path.join(path1, "%s_%s.txt" % (i-1, name))
            except Exception as e:
                print e.message


# 将一个txt文件的内容,按照数字顺序进行分割
def SplitFile_by_Num(file_path2, dst):
    with open(file_path2, 'rb') as f2:
        lines2 = f2.readlines()
        file_dir2 = file_path2.replace("\\", '/').split("/")[-1].split(".")[0]
        path2 = os.path.join(dst, file_dir2)
        if not os.path.exists(path2):
            os.makedirs(path2)
        i = 1
        for line in lines2:
            try:
                if ("%s\r\n" % i) in line or ("%s、" % i in line) or ("%s " % i in line) or str(i) in line:
                    name = line.strip().decode('utf8')
                    i += 1
                else:
                    fp = open(file_name2, 'ab+')
                    fp.write(line)
                    fp.close()
                file_name2 = os.path.join(path2, "%s_%s.txt" % (i-1, name))
            except Exception as e:
                 print e.message


# 获取某个目录下面的所有txt
def get_all_txt(path):
    filepaths = []
    for root, dirs, files in os.walk(path):
        for name in files:
            if '.txt' in name:
                filepaths.append(os.path.join(root, name))
    return filepaths


if __name__ == "__main__":
    file_dir = "D:\\xiaoshuo"
    file_paths = get_all_txt(unicode(file_dir, "utf8"))
    for one in file_paths:
        SplitFile(one, dst)
        for root, dirs, files in os.walk(os.path.join(dst, one.replace("\\", '/').split("/")[-1].split(".")[0])):
            if not files:
                SplitFile_by_Num(one, dst)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档