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

Python中readline()仅返回指定字符而非整行的问题排查

问题原因与解决方法

哦,这问题我之前也踩过坑!你代码里的file.readline(1)是关键问题——这里的参数1不是指定读取第1行,而是告诉Python只读取当前行的前1个字符!这就是为什么你输出是"G",它刚好是你文本文件第一行的第一个字符~

为什么会这样?

Python的file.readline(n)方法,参数n的作用是设置单次读取的最大字符数,而不是行号:

  • 如果不传参数(readline()),它会读取整一行内容,包括末尾的换行符\n
  • 如果传了整数n,它就会读取这一行里最多n个字符,或者读到行尾就停止

怎么修正?

如果你想读取文件的第一行完整内容,直接去掉参数就行:

if os.path.exists(saveDir + name + '.txt'):
    print('welcome back ' + name + '.')
    file = open(saveDir + name + '.txt')
    race = file.readline()  # 不带参数,读取整行
    file.close()  # 一定要记得关闭文件!
else:
    race = intro()

更推荐的写法(用with语句)

用with语句可以自动帮你关闭文件,避免忘记关闭导致的资源占用问题,同时代码更简洁:

if os.path.exists(saveDir + name + '.txt'):
    print('welcome back ' + name + '.')
    with open(saveDir + name + '.txt', 'r') as file:
        race = file.readline().strip()  # strip()去掉换行符和前后空格
else:
    race = intro()

这里的strip()是可选的,但它能帮你去掉行尾的换行符,让race的内容更干净(比如原本读取的是"Grant Human\n",处理后就变成"Grant Human")。

内容的提问来源于stack exchange,提问作者Grant Hopkins

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:02:51