2016-12-25 116 views
2

我希望你到目前爲止有愉快的假期!Python:從.txt文件讀取行並計算它們

我試圖讀取一個.txt文件,其中的值被存儲,並通過一個線跳過彼此分開,然後用這些值進行計算。

我想弄清楚如何使用Python腳本來做到這一點。

比方說,這是我的文本文件的內容:

0.1 #line(0) 
1.0 
2.0 
0.2 #line(3) 
1.1 
2.1 
0.3 #line(6) 
1.2 
2.2 
... 

基本上我會實現計算的操作:

線(0)*線(1)*線(2 )在第一步驟中,將其寫入到另一個.txt文件,然後用線繼續(3)*線(4)*線(5)等:

with open('/filename.txt') as file_: 
    for line in file_: 
     for i in range(0,999,1): 
      file = open('/anotherfile.txt') 
      file.write(str(line(i)*line(i+1)*line(i+2) + '\n') 
      i += 3  

有沒有人有一個想法如何得到這個工作?

任何提示將不勝感激!

感謝, 史蒂夫

+0

目前你的問題是什麼?僅供參考,您應該將數據讀入您的程序,進行處理,然後寫入,而不是同時進行。你需要關閉這個'write'函數。 – FlipTack

+0

你的檔案有多大? –

+0

哪個python版本? 2或3? –

回答

2

這將在同一時間乘三個數字和三個的產品寫入到另一個文件:

with open('numbers_in.txt') as fobj_in, open('numbers_out.txt', 'w') as fobj_out: 
    while True: 
     try: 
      numbers = [float(next(fobj_in)) for _ in range(3)] 
      product = numbers[0] * numbers[1] * numbers[2] 
      fobj_out.write('{}\n'.format(product)) 
     except StopIteration: 
      break 

這裏next(fobj_in)總是嘗試讀取下一行。 如果沒有更多行StopIteration引發異常。 except StopIteration:捕獲此異常並終止循環。 列表理解[float(next(fobj_in)) for _ in range(3)] 將從三行讀取的三個數字轉換爲浮點數字。 現在,乘以你的號碼是索引到列表numbers列表的問題。

+0

這是否適合你? –

+0

謝謝邁克,它工作得很好! –

1

你可以這樣做:

file = open('/anotherfile.txt','w') 
i=0 
temp=1 
with open('/filename.txt') as file_: 
    for line in file_: 
     temp = temp*int(line) 
     if(i>1 && i%3==0): 
      file.write(str(temp)+'\n') 
      temp=1 
     i += 1 
+0

謝謝,它也有效! –

相關問題