Python 3.6.4中readline()逐字符返回而非整行的问题求助
解决Python中readline()返回单个字符的问题
嘿,我一眼就瞅出问题出在哪了——你代码里的循环写法搞错啦!
你写的for line in file.readline(),这里的file.readline()只会返回一整行的字符串,然后你用for循环去遍历这个字符串,本质上就是把这行字符串拆成单个字符逐个迭代,这当然每次拿到的是单个字符而不是完整行啦。
给你两种正确的写法,选哪种都可以:
推荐写法:直接遍历文件对象
这是Python处理文件最简洁高效的方式,文件对象本身就是可迭代的,每次迭代会自动返回一行:with open('file.xml', 'rt', encoding='utf8') as file: for line in file: do_something(line)如果一定要用readline():用while循环持续调用
如果你坚持要用readline(),得用while循环不断调用它,直到它返回空字符串(表示文件读取完毕):with open('file.xml', 'rt', encoding='utf8') as file: line = file.readline() while line: do_something(line) line = file.readline()
另外补充一句:你提到文件是Linux生成的UTF-8无BOM格式,行尾是LF(0x0A),这在Windows的Python里完全没问题——Python的open()函数默认会处理通用换行符,所以行尾格式不会影响行的读取,你不用操心这个~
内容的提问来源于stack exchange,提问作者Jonathan
相关产品推荐
相关产品推荐

