日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

word文件批量转换为txt文档

發布時間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 word文件批量转换为txt文档 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

任務:有一個父文件夾,下邊有若干子文件夾,子文件夾下是若干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文档的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。