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
相关产品推荐
相关产品推荐

