Python - 读取,解析和写回文件

Bal*_*ran 2 python parsing

我试图从文本文件中读取大约5000行代码,然后解析并将解析后的值存储到另一个文本文件中.

但是,我只能对前967行执行此操作(如输出文件所示,其中仅包含前967行的已解析值).

这是我写的这个简单的代码.

infile = open("Input.txt", "r")
outfile = open("Output.txt", "w")
for line in infile.readline():
    temp = infile.readline()
    value = temp.split("<_|_>")
    outfile.write(value[1])
Run Code Online (Sandbox Code Playgroud)

如何编写其他4000多个值?

Dol*_*000 17

因为您的for迭代不在infile第一行中的字符上,而是在第一行中的字符上.可能,第一行是967个字符长.

for line in infile.readline()意味着你是从infile字符串中读取第一行.字符串是可迭代的,就像迭代它们迭代字符串中的字符一样.因此,每次为该行中的每个字符运行循环.

您想要做的可能是,更像是这样的事情:

with open("Input.txt", "r") as infile, open("Output.txt", "w") as outfile:
    for line in infile:
        outfile.write(line.split("<_|_>")[0])
Run Code Online (Sandbox Code Playgroud)

Python中的文件对象也是可迭代的.迭代它们遍历每一行.您可以使用for line in infile.readlines()(注意:readlines,而不是readline),但infile在迭代之前,这将读入一个巨大的数组中的所有行.直接在文件对象上进行迭代只能将最新的读取行保留在内存中.

  • 现在文件本身就是迭代器,几乎不需要使用readlines().使用这个答案的'for line in infile:`表格.此外,+1使用`with`. (2认同)