我试图从文本文件中读取大约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])
我如何编写其他4000多个值?
答案 0 :(得分:16)
因为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])
Python中的文件对象也是可迭代的。迭代它们遍历每一行。您可以使用for line in infile.readlines()
(注意:readlines
,而不是readline
),但这会将infile
中的所有行读入一个巨大的数组在迭代之前。直接在文件对象上进行迭代只能将最新的读取行保留在内存中。
答案 1 :(得分:0)
为什么我们不能使用
f1 = open('Input.txt','r')
f2 = open('Output.txt','w')
for i in f1:
f2.writelines(i)
f2.close()
答案 2 :(得分:-1)
您应该阅读每一行并解析。您正在输入文件中的单行上执行for循环。一个简单的方法是使用while循环
f1 = open('Input.txt','r')
f2 = open('Output.txt','w')
line = f1.readline()
while line:
value = line.split('<_|_>')
f2.write(value[0])
line = f1.readline()