You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:47:16