从文本文件中读取特定数据

时间:2013-11-27 22:19:53

标签: python

我有一个.dat文件,其中包含超过40,000行包含文本和数据的文件。我想根据以下内容从此文件中提取特定数据:

显然我需要一个行计数器,所以当我到达文件末尾时我知道。 我想打开文件进行阅读,另一个用于写入,并阅读第一行。如果从第一行开始的第2行位置以“Model”开头,我想打开一个空行到打开的文件进行写入,然后在文件中向前跳过两行。如果从开头行开始的第二行不是以“Model”开头,那么我希望从第一行开始选择8个位置的文本并将其打印到打开的文件中进行写入。然后我将从第一行移动11个位置,依此类推。

infile = open("ratios.dat","r")
outfile = open("corr_ratios.txt","w")

for aline in infile:
    items = (aline+2).split()
    if items[0] = "Model"
        outfile.write("\n")
        aline = aline+2
    else    
        items = aline+8
        outfile.write(items)

1 个答案:

答案 0 :(得分:2)

python中的文件是它们自己的迭代器,可以一次使用/高级一行:

with open('path-to-file.txt') as infile:
  for line in infile:
    # code here to deal with line.

此外,因为文件句柄是迭代器,所以它也可以显式推进:

with open('path-to-file.txt') as infile:
  for line in infile:
    if condition:
      # skip a line
      next(infile)

结合这两者,你应该能够使用直线,跳过线等。

仔细检查了您发布的代码后,您尝试将一个整数添加到字符串(aline + 2)。为了更接近你的尝试方法,你实际上会做这样的事情:

lines = infile.readlines()
for lineno, line in enumerate(lines):
  targetline = lines[lineno + 2]

此方法将整个文件加载到内存中,根据您的文件大小,这可能适合也可能不适合。