[英]reading from multiple txt files - strip data and save to xls
我是python的新手,到目前為止,我已經在下面編寫了以下代碼,該代碼使我可以在文件夾中搜索文本文件,然后從中讀取所有行,打開一個excel文件並在其中保存讀取的行。 (我仍然不確定是否對所有文本文件一個接一個地執行)。運行此命令后,我僅看到文件文本數據正在讀取並保存到excel文件中(第一列)。 或者可能是將多個文本文件中的數據覆蓋到同一列中,直到完成為止。 誰能為我指出正確的方向,如何通過每個文本文件將剝離的數據寫入excel中的下一個可用列?
import os
import glob
list_of_files = glob.glob('./*.txt')
for fileName in list_of_files:
fin = open( fileName, "r" )
data_list = fin.readlines()
fin.close() # closes file
del data_list[0:17]
del data_list[1:27] # [*:*]
fout = open("stripD.xls", "w")
fout.writelines(data_list)
fout.flush()
fout.close()
可以凝結在
import glob
list_of_files = glob.glob('./*.txt')
with open("stripD.xls", "w") as fout:
for fileName in list_of_files:
data_list = open( fileName, "r" ).readlines()
fout.write(data_list[17])
fout.writelines(data_list[44:])
您是否知道writelines()不會引入換行符? readlines()在讀取過程中保留換行符,因此writelines()在文件中寫入的data_list元素中存在換行符,但后者不會引入換行符
這些行是“有趣的”:
del data_list[0:17]
del data_list[1:27] # [*:*]
您將刪除輸入文件中前17 行中的所有行 ,保留第18行(如果存在),刪除另外26行(如果存在),並保留以下任何行。 這是一個非常不尋常的過程,在您要執行的操作的描述中根本沒有提及。
其次,您將每個輸出行(如果有)寫入相同的輸出文件。 在腳本末尾,輸出文件將僅包含來自最后一個輸入文件的數據。 請勿將代碼更改為使用追加模式 ...僅在追加記錄時始終打開和關閉同一文件是非常浪費的,只有在確實需要確保將數據刷新到磁盤中時才需要這樣做停電或其他故障。 在開始讀取文件之前,請一次打開輸出文件,並在完成所有輸入文件后將其關閉一次。
第三,任何舊的任意文本文件都不會因為您將其命名為“ something.xls”而成為“ excel文件”。 您應該使用csv模塊編寫它,並將其命名為“ something.csv”。 如果要進一步控制Excel的解釋方式,請使用xlwt編寫一個xls文件。
第四,您多次提到“列”,但是由於您未提供有關如何將輸入行拆分為“列”的任何詳細信息,因此很難猜測“下一個可用列”的含義。 甚至有可能懷疑您混淆了行和列...假設每個輸入文件中的行數少於43行,則最后一個輸入文件的第18行將是您在輸出文件中看到的全部。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.