2016-12-25 18 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  

誰でもこの仕組みを理解する方法がありますか?

ヒントをいただければ幸いです!

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

現時点であなたの問題は何ですか?おそらく、あなたはおそらく両方の処理を同時に行うのではなく、プログラムにデータを読み込んで処理し、書き込むべきでしょう。そして、あなたはその 'write'関数で閉じた括弧を必要とします。 – FlipTack

+0

ファイルはどのくらいですか? –

+0

どのpythonバージョン? 2または3? –

答えて

2

これは一度に3つの数値を乗算し、別のファイルに3の製品を記述します:

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 

あなたがこれを行うことができます

おかげで、 スティーブ

+0

これはあなたのために機能しますか? –

+0

ありがとうマイク、それは本当にうまくいった! –

1

ここではnext(fobj_in)は常に次の行を読み込もうとします。 行がない場合は、StopIteration例外が発生します。 except StopIteration:はこの例外をキャッチし、ループを終了します。 リストの理解[float(next(fobj_in)) for _ in range(3)] は、3行から読み取られた3つの数値を浮動小数点数に変換します。 ここで、数字を乗算することは、リストnumbersにインデックスを付けることです。

+0

ありがとう、それはまた動作します! –

関連する問題