我在Windows 10上使用Python 3.6.4和Fall Creators Update。我正在尝试使用以下代码读取XML文件:
readline()
0x0a
在每次通话时返回一个字符,而不是完整的一行。该文件是在Linux上生成的,绝对编码为UTF8,在开头没有任何特殊内容,例如BOM,并且已经过十六进制转储验证以包含有效数据。行结束是-1
,因为它来自Linux。我尝试将readline()
指定为SwitchNavigator
的参数,这应该是默认值,而不会改变行为。该文件非常大(> 240GB),但问题发生在文件的开头。
有关我可能做错的任何建议吗?
答案 0 :(得分:5)
readline()
将返回一行作为字符串(然后迭代)。您应该使用readlines()
代替,因为这将为您提供for循环将迭代的行列表,一次一行。
更好,更有效:
for line in file:
do_something(line)
答案 1 :(得分:0)
readline()返回表示文件中一行的字符串,而readlines()返回一个列表,每一项都是一行。很明显
for line in file.readline()
遍历一个字符串,这就是为什么要得到一个字符
如果要遍历文件并避免阻塞内存,请尝试以下操作:
line = '1'
while line:
line = f.readline()
if !line:
break
do_something(line)
或:
line = f.readline()
while line:
do_something(line)
line = f.readline()
顺便说一句,beautifulsoup是一个有用的xml短语软件包。