任务:有一个父文件夹,下边有若干子文件夹,子文件夹下是若干word文件,没有其他非word文件。将父文件夹所有的word文件读取并写入指定路径下的txt文件之中。
步骤:
1.读取父文件夹下所有的子文件夹名称
2.将子文件夹下所有.docx文件分别转换为.txt文件
3.附加功能,实现文件转码。(因为word的写入doc.SaveAs()s生成的都是ANSI编码文件,可以考虑转换为utf-8编码的文件。当然也可以不转。)
4.将同一目录下所有的txt文件合并成为一个
直接上代码

#%%
#读取一个父文件夹下所有的子文件名
import os
file_dir = r"D:\\新建文件夹\\父文件夹"
name =[]
#a=os.walk(file_dir)
for root, dirs, files in os.walk(file_dir): for dir in dirs: name.append(dir)#print(os.path.join(root, dir))  # 输出完整路径
print(name)
#   print(root) #当前目录路径
#   print(dirss) #当前路径下所有子目录
#   print(files) #当前路径下所有非目录子文件 #%%
#将一个文件夹下所有的word可读文件分别转换为txt文件
#################注意转换的都是ANSI编码,txt的合并读不了,要先换码。或者直接encoding='ANSI'############
from win32com import client as wc
import osdef get_ziwenjianjai():#读取一个父文件夹下所有的子文件名file_dir =  r"D:\\新建文件夹\\父文件夹"name =[]for root, dirs, files in os.walk(file_dir): for dir in dirs: name.append(dir)return name[1:]  #这里第一个文件我不需要,故扔了all_FileNum = 0
def Translate(level, path):global all_FileNum'''将一个子文件目录下所有doc文件转成txt'''# 该目录下所有文件的名字files = os.listdir(path)for f in files:if (f[0] == '~' or f[0] == '.'):continuenew = path + '\\' + fprint(new)# 改成txt格式word = wc.Dispatch('Word.Application')  #调用word程序doc = word.Documents.Open(new)# 除去后边的.docx后缀#tmp = new[:-5]#savepath = tmp + '.txt'    #写到原文件目录下save= 'E:\\保存处'+ '\\' + f[:-5]savepath = save + '.txt'    #写到指定目录下doc.SaveAs(savepath, 4)  # 4代表存为txt格式doc.Close()all_FileNum = all_FileNum + 1if __name__ == '__main__':zimulu=get_ziwenjianjai()for name in zimulu:mypath = 'D:\\新建文件夹\\父文件夹\\'+ nameTranslate(1, mypath)print('文件总数 = ', all_FileNum)#%%
#文件编码格式转换
import os
import codecs
import chardetdef list_folders_files(path):"""返回 "文件夹" 和 "文件" 名字:param path: "文件夹"和"文件"所在的路径:return:  (list_folders, list_files):list_folders: 文件夹:list_files: 文件"""list_folders = []list_files = []for file in os.listdir(path):file_path = os.path.join(path, file)if os.path.isdir(file_path):list_folders.append(file)else:list_files.append(file)return (list_folders, list_files)def convert(file, in_enc="GBK", out_enc="UTF-8"):"""该程序用于将目录下的文件从指定格式转换到指定格式,默认的是GBK转到utf-8:param file:    文件路径:param in_enc:  输入文件格式:param out_enc: 输出文件格式:return:"""if in_enc is None:  #注意加入这一步可以让程序跳过该文件夹下其他不是txt格式的文本passelse:in_enc = in_enc.upper()out_enc = out_enc.upper()try:print("convert [ " + file.split('\\')[-1] + " ].....From " + in_enc + " --> " + out_enc)f = codecs.open(file, 'r', in_enc, "ignore")new_content = f.read()codecs.open(file, 'w', out_enc).write(new_content)except IOError as err:print("I/O error: {0}".format(err))
# 将路径下面的所有文件,从原来的格式变为UTF-8的格式
if __name__ == "__main__":path = r'D:\\新建文件夹\\txt整合'         #只要满足形式,一般只需改变文件夹的路径即可(list_folders, list_files) = list_folders_files(path)print("Path: " + path)for fileName in list_files:filePath = path + '\\' + fileNamewith open(filePath, "rb") as f:data = f.read()codeType = chardet.detect(data)['encoding']   # 自动获取文件编码格式convert(filePath, codeType, 'UTF-8')       #%%
#合并一个文件夹下的所有txt文件
# -*- coding: utf-8 -*-
import os
import os.path
import time
time1=time.time()##########################合并同一个文件夹下多个txt################
def MergeTxt(filepath,outfile):# get .txt documentrootdir = os.path.join(filepath)# read#with open('outfile/write.txt', 'w')as f:for dirpath, dirnames, filenames in os.walk(rootdir):for filename in filenames:if os.path.splitext(filename)[1] == '.txt':parent= "D:\\新建文件夹\\保存处"k = open(parent+outfile, 'a+',encoding='utf-8')  # 写入路径txtPath = os.path.join(rootdir, filename)  # txtpath就是所有txt文件的路径f = open(txtPath,encoding='ANSI')   # 若文件已经转为utf-8编码则写utf-8##########换行写入##################lines= f.readlines()for line in lines:line= line.lstrip().replace('\t','').replace(' ','') # 清洗if len(line) > 15:  #长度k.write(line)k.close()print("finished")print("输出文件路径:",filepath+outfile)if __name__ == '__main__':filepath="D:\\新建文件夹\\待合并文件夹名"outfile="\\合并raw.txt"MergeTxt(filepath,outfile)time2 = time.time()print(u'总共耗时:' + str(time2 - time1) + 's')

不足:
1.word的Saveas()方法与f.write()方法不同,对于存在表格的数据,word的Saveas()能将表格提取到一行,与原文较类似,但是使用f.readlines()读取再用f.write()写入之后,表格中每一个小方格的数据就变成了一行,比较难受,尚未解决。
2.如果word中有图片或者文件格式比较复杂,word会经常出现弹窗,需要手动点击弹窗的问题保证程序继续运行。
3.对于子文件夹中有其他类型的文件的情况没有完全考虑,没试过能不能运行。

word文件批量转换为txt文档相关推荐

  1. 关于python:如何将Word文档批量转换为PDF文档

    Q:         我们在实际工作中很容易发现,有些时候我们需要将Word文档转换为PDF文档,如果只是一个文件,我们也只是需要通过Word提供的转换为PDF文档的功能就可以实现了.但是WPS需要收 ...

  2. 如何使用python批量修改txt文档

    1 - 目标 因为需要整理深度学习的数据集,需要手动改写一些txt数据集对应的初始项目 如图,我需要把71改成2 : 把73删除 : 把57改成3 :改57成3且同时把2删除 因为有上千个这样的txt ...

  3. 如何把pdf转换为txt文档,pdf转txt的好方法

    如何把pdf转换为txt文档,pdf转txt的好方法.txt文档是每个电脑都自带的文字编辑工具.而pdf文件的缺点就是在于文件本身无法进行编辑.修改.当pdf文件中的内容产生错误时,就需要将pdf文件 ...

  4. 如何批量创建txt文档并命名?

    如何批量创建txt文档并命名?txt是电脑上的文本文件,txt文件里面只能编写文件,它是电脑使用过程中比较常用的文件格式.有时候我们需要新建大量的txt文件,并将它们命名为事先准备好的名称,如果需要创 ...

  5. PDFBox下载及将pdf提取转换为txt文档

    下载网址: http://sourceforge.net/projects/pdfbox/ 最新版本为0.7.3 从解压包中的external目录复制以下jar包: bcmail-jdk*.jar b ...

  6. 自动插入匹配与标题相关的百度图片或者搜狗图片软件-批量插入txt文档-Chatgpt批量写文章配图神器

    1.我们用<Chatgpt 3.5-turbo软件>批量生成txt文档,但是这样txt文档里不带图片,直接发布到网站上,光有文字没有图片,效果也不是很理想,就需要一款配图软件. 2.该软件 ...

  7. 批量给TXT文档插入带标题合成图片-Chatgpt生成TXT文档配图神器

    1.我们用<Chatgpt 3.5-turbo软件>批量生成txt文档,但是这样txt文档里不带图片,直接发布到网站上,光有文字没有图片,效果也不是很理想,就需要一款配图软件. 2.提高文 ...

  8. 批量删除txt文档内容命令_Linux@实用操作命令

    帮助 当我们对某个指令不熟悉时,我们可以使用 Linux 提供的帮助指令来了解这个指令的使用方法. man 命令:man [命令或配置文件] 功能描述:获得帮助信息 案例:查看 ls 命令的帮助信息 ...

  9. python读取文件夹下所有txt_Python读取文件夹中TXT文档

    1.读取文件夹中多个txt文档 dest = "sougou" #文档的路径 for root, dirs, files in os.walk(dest): for OneFile ...

  10. 如何将PDF文件转换成TXT文档

    相信大家都知道什么是PDF文件,可是在使用PDF文件的时候我们常常会碰到一个难题,就是将 PDF文件转换成TXT或者Word文档进行编辑,今天就给大家分享一种简单的转换方法. 1.先打开手机,可借助手 ...

最新文章

  1. 网络营销外包——改善企业网站排名现状网络营销外包少不了
  2. SAP中有关差异的一些概念
  3. jpg图片转eps 用于LaTeX
  4. 【剑指offer】面试题43:n个骰子的点数
  5. 不愿意和别人打交道_最不愿与陌生人打交道的星座
  6. [2016-03-15]rabbitmq notes
  7. android 支付模块封装,Android集成支付----支付宝支付总结与封装
  8. 『转』死去度百飞鸽传书
  9. 电路维修(信息学奥赛一本通-T1448)
  10. matlab软件安装码,Matlab2017a软件安装包以及安装教程
  11. mysql建表语句转达梦_MySQL建表语句转PostgreSQL建表语句全纪录
  12. 心理学第二周学习笔记:心理学的历史和流派
  13. I2C总线中8bit和10bit有什么区别
  14. 模糊综合评价在实际问题中的应用(案例)
  15. MatplotlibDeprecationWarning: Calling gca() with keyword arguments was deprecated in Matplotlib 3.4
  16. 木纹标识lisp_LISP架构中一种新的移动性管理方案研究
  17. 五种方法教你预防ddos攻击
  18. GrayLog日志平台
  19. 什么叫地推模式_地推模式一般使用什么方法可以成功?
  20. “AliOS之父”——阿里巴巴王坚博士

热门文章

  1. PHP购物网站(含购物车、全部源码、数据库设计表及其源码)
  2. 帧差法——动态检测——统计车流量
  3. 计算机操作系统的功能有哪些,操作系统的基本功能是什么
  4. 面对最菜TI战队,OpenAI在Dota2上输的毫无还手之力
  5. 计算机二级access数据库考试题型,2016最新计算机二级Access数据库试题及答案
  6. 莫言诺贝尔文学奖演讲全文:《讲故事的人》(推荐)
  7. 音视频技术 数字电视发展应用
  8. windows驱动加载顺序
  9. 基于Java毕业设计在线购书商城系统源码+系统+mysql+lw文档+部署软件
  10. 不懂自学还想去大厂?快醒醒吧!