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

谢谢,它也有效! –

相关问题