写在前面

代码很菜,而且写了很久之后才写的笔记,代码里仅包含主要函数的实现。

原因

有很多很多,大概8000本epub文件需要转换成TXT。没找到现成工具偷懒,就想写一段代码代工。

缺点

只对文字有效,图片类无法转化。

原理

先转换成压缩包,解压缩得到一些包含图书内容的html文件,从html标记中获取文本并保存。
* 转换成压缩包:修改文件名后缀为’.rar’
* 解压缩:使用360批量解压。作者又懒又菜,写出解压缩代码的用的时间要远远超过使用工具的时间。
* 遍历文件,生成html文件的路径
* 解析html文件,获取文本信息
* 保存成TXT

需要的代码

  • 依赖的包
import os
from urllib.request import urlopen
from bs4 import BeautifulSoup
from nt import chdir
  • 修改文件名后缀
##将.epub修改成.rar
def epub_rar(start):files = os.listdir(start+'\\.')#获取当前目录下的文件for filename in files:portion = os.path.splitext(filename)#将文件名拆成名字和后缀if portion[1] == ".epub":newname = portion[0] + ".rar"os.rename(start+'\\'+filename,start+'\\'+newname)#修改

例子:

jingxuan='E:\\BaiduYunDownload\\语料库\\精选电子书7200本合集'
starts=[]
files = os.listdir(jingxuan+'\\.')#获取当前目录下的文件
for filename in files:starts.append(jingxuan+'\\'+filename+'\\.')
for i in starts:epub_rar(i)
  • 如果已经解压缩
##遍历文件夹,找出网页文件
def bianli(filepath):if os.path.isfile(filepath):if '.html'in filepath or '.xhtml' in filepath or '.htm' in filepath:all_file.append('file:\\\\'+filepath)else:filelist = os.listdir(filepath)for l in filelist:path=os.path.join(filepath,l)bianli(path)return all_file

例子:

##获取所有的文本名和文本下的的文件路径
filedic={}
start = 'E:\\BaiduYunDownload\\语料库\\豆瓣高分电子书合集'
files = os.listdir(rootdir)
for i in f_list:path = os.path.join(rootdir,i)all_file=[]all_file=bianli(path)filedic[i]=all_file

*获取文本内容

#把链接转换成txt文本,依赖urlopen和bs4
def get_text(url):html=urlopen(url)b=BeautifulSoup(html,'lxml').textreturn b
  • 创建文件夹和保存文件
##创建文件夹
def mkdir(path):    folder = os.path.exists(path)    if not folder:                   #判断是否存在文件夹如果不存在则创建为文件夹  os.makedirs(path)            #makedirs 创建文件时如果路径不存在会创建这个路径   else:  print ("---  There is this folder!  ---" )
##保存文件
def save_txt(filename,text):with open(filename,"w",encoding='utf-8') as f:f.write(text)

例子:

##生成精选7200的类别路径
start = 'E:\\BaiduYunDownload\\语料库\\精选电子书7200本合集'
newpath='E:\\BaiduYunDownload\\语料库\\精选电子书7200本txt合集'
mkdir(newpath)
files = os.listdir(start)
##获取精选7200的类别路径,创建对应的txt文件的路径
jingxuan_f=[]
new_f=[]##存放新txt文件的路径
for i in files:jingxuan_f.append(os.path.join(start,i))new_f.append(os.path.join(newpath,i))mkdir(os.path.join(newpath,i))
##转换精选电子书
for i in range(0,len(jingxuan_f)-1):f_list = os.listdir(jingxuan_f[i])leibiedic={}for f in f_list:path = os.path.join(jingxuan_f[i],f)all_file=[]all_file=bianli(path)leibiedic[f]=all_filefor name in leibiedic:try:textname=new_f[i]+'\\'+name+'.txt'result=''for url in leibiedic[name]:url=str(url)text=get_text(url)result=result+textexcept:print(name)continuesave_txt(textname,result)
  • 把压缩文件删除
##遍历删除.rar文件
def bianlidel(filepath):if os.path.isfile(filepath):if '.rar'in filepath:os.remove(filepath)else:filelist = os.listdir(filepath)for l in filelist:path=os.path.join(filepath,l)bianlidel(path)

python:epub文件批量转TXT相关推荐

  1. python rtf转txt_将DOC、RTF格式文件批量转为TXT格式文件

    Windows 下将目录下所有文件下的文件 拷贝到一个目录中:搜索"." 安装python 及 win32com模块 pip install pypiwin32 创建LDA_RTF ...

  2. json文件批量转为txt文件

    json文件批量转为txt文件 1 批量json标注文件: 2 json所对应的各个图片: 3 每个json文件内容: [{"type": 1,"x": 116 ...

  3. 用python修改文件内容修改txt内容的3种方法

    用python修改文件内容修改txt内容的3种方法 方法一.修改原文件方式 def updateFile(file,old_str,new_str):"""替换文件中的字 ...

  4. Python——dat文件批量合并为同一个csv文件

    Python--dat文件批量合并为同一个csv文件 目的:将文件夹ZW下的所有dat文件(含子文件夹)合并,并保存到results.csv中,便于后续使用excel进行处理与分析. 代码: #!/u ...

  5. 基于Python的文件批量重命名(附详细过程解读)

    基于Python的文件批量重命名(附详细过程解读) 0.闲言碎语 hi ~ 欢迎关注公众号"壹贰叁言"! 啥都写,图一乐哈哈! 1.前因后果 前几日,我在用arcgis处理一些数据 ...

  6. 使用python进行文件批量重命名

    python文件重命名 最近由于要处理大量的图片文件, 从网上下载下来的图片名称各不相同, 但又有一些规律, 故而采用python对文件进行批量重命名 目的:对文件名进行简单的分割处理, 提取出图片的 ...

  7. python如何对文件进行批量命名-利用Python对文件批量重命名

    由于要用到对无序的文件进行重命名,以下写了一个脚本,进行批量进行重命名. 基本格式是 i.后缀名 (i 循环条件下的数 ) 1 #coding:utf8 2 import os; 3 4 def re ...

  8. python之文件批量更名及文件名批量存储

    如果self.savefilenameformat输入为空的情况下,将文件夹中的文件名下入txt文本以及其他类型文档中,在这里有两种选择模式,默认self.choosefilenameformat=2 ...

  9. python教程文件 txt_Python读写txt文本文件的操作方法全解析

    filename = 'array_reflection_2D_TM_vertical_normE_center.txt' # txt文件和当前脚本在同一目录下,所以不用写具体路径 pos = [] ...

  10. json文件批量转txt

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮 将json批量提取转化为txt文件. 上图是 json文件的属性,在下面提取中 会用到这些属性. 下面直接对代码讲解: 因为由于工作需要我只 ...

最新文章

  1. OracleDBConsoleorcl服务无法启动问题(1053错误、发生服务特定错误2)
  2. f5 ddos cc——Mitigating DDoS Attacks with F5 Technology
  3. 员工(类的多态性实验)
  4. Python中的getpass模块
  5. 动态规划问题中找零问题 --C语言实现
  6. jQuery瀑布流插件 Masonry
  7. 详解python多进程(含示例代码)
  8. mysql mapinfo_MapInfo常见数据格式
  9. 数据库字典收集整理,设计数据表时可拿来查考
  10. 天大2021年秋学期考试《画法几何及工程制图》离线作业考核试题
  11. 分享一下我的面试和入职经历
  12. Codeforces 1092D1. Great Vova Wall (Version 1)
  13. solidworks 文件服务器,solidworks配置服务器
  14. 怎么给计算机上锁键盘,想把笔记本电脑的键盘锁住,用外置键盘怎样做?
  15. QQ邮箱中转站文件即将过期时如何转存到微云
  16. Meltdown Reading Kernel Memory from User Space
  17. 物联网开发常用的开发板_物联网开发人员简介:物联网开发人员调查的结果
  18. 超级简单的 RocketMQ 流量削峰实战
  19. 笔记本无线上网设置教程(图文)
  20. ubuntu安装 veloview_Pointnet+Frustum-Pointnet复现(Pytorch1.3+Ubuntu18.04)

热门文章

  1. Android逆向第二天
  2. android清理空间,安卓手机如何清理系统空间
  3. H5标签datalist
  4. 危机管理计划书模板_危机公关策划书范文_计划方案.doc
  5. sum多个字段的值相加_Excel Sumifs函数多字段多条件求和使用实例
  6. 吴伯凡-认知方法论-如何消除认知阑尾
  7. cpuz测试分数天梯图_怎么看CPU性能排行 CPU天梯图2018年5月最新版 (全文)
  8. 概率论与数理统计——总结
  9. ImageNet数据集编号对应的类别内容
  10. python re sub模块字符串提取非字母非数字_7.python之正则表达式re模块