我有幾個.xy文件(2列x和y值)。我一直在嘗試讀取它們並將「y」值粘貼到單個excel文件中(所有這些文件中的「x」值都是相同的)。我到目前爲止的代碼逐個讀取文件,但其速度非常慢(每個文件大約需要20秒)。我有很多.xy文件,時間大大增加。我到目前爲止的代碼是:優化或加速從.xy文件讀取excel
import os,fnmatch,linecache,csv
from openpyxl import Workbook
wb = Workbook()
ws = wb.worksheets[0]
ws.title = "Sheet1"
def batch_processing(file_name):
row_count = sum(1 for row in csv.reader(open(file_name)))
try:
for row in xrange(1,row_count):
data = linecache.getline(file_name, row)
print data.strip().split()[1]
print data
ws.cell("A"+str(row)).value = float(data.strip().split()[0])
ws.cell("B"+str(row)).value = float(data.strip().split()[1])
print file_name
wb.save(filename = os.path.splitext(file_name)[0]+".xlsx")
except IndexError:
pass
workingdir = "C:\Users\Mine\Desktop\P22_PC"
os.chdir(workingdir)
for root, dirnames, filenames in os.walk(workingdir):
for file_name in fnmatch.filter(filenames, "*_Cs.xy"):
batch_processing(file_name)
任何幫助表示讚賞。謝謝。
有什麼建議嗎? – groovyrv
我不確定'linecache'是如何工作的 - 它會使用'sum'中以前打開和關閉的file_name的數據嗎?或者它打開文件只是一次或每行都必須重新打開文件? – Aprillion