【发布时间】:2014-12-14 17:30:39
【问题描述】:
所以我正在阅读 Python 文档/教程,特别是我正在查看带有文件的输入/输出。这就是教程所说的将返回文件中的任何内容:
>>> f.readline()
'This is the first line of the file.\n'
>>> f.readline()
'Second line of the file\n'
>>> f.readline()
''
我在我的 .py 中放了同样的东西,它没有返回任何异常或问题,但它也没有返回任何值。这是我的代码:
f = open('test.txt')
f.readlines()
除非我使用变量和print,否则程序不会返回文件中的任何内容。这是我的文件内容:
Hello This Is Test
For Loops In Files
Flying Away
A Bird also Flies
Wow
关于为什么这不起作用的任何想法?我认为它是我的解释器,因为我使用的是 SublimeREPL,但在那之前它没有做任何奇怪的事情,所以我不太确定。此外,当我尝试在我的 Python 控制台中运行它时,它给了我一个错误,然后只是关闭了控制台,所以我什至看不到错误。相当适得其反。
编辑:澄清一下,我的问题不是for 循环,for 循环从以前开始就可以正常工作了。问题是 f.readlines() 不返回任何行,即使文档说它应该返回下一行。我将从我的代码中取出for 循环来澄清。另外,很抱歉,如果我混淆了f.readline() 和f.readlines(),但无论如何它们都不起作用。谢谢,
- 赛义德
回答:对于遇到此问题或只是好奇的任何人,问题是在编写脚本时我必须使用print,但在命令提示符下,我可以使用f.readlines(),它会读取线。感谢@wwii。
【问题讨论】:
-
for items in readLine: readLine = f.readline()没有意义。您正在为第一行中的每个字符读取文件的一行。 -
@Rawing 是的,我明白这一点,但即使我删除了除
f=...部分之外的所有代码,并且只输入f.readlines(),它仍然不会返回任何内容。 -
您确定打开的是正确的文件吗?试试
import os; print os.path.realpath(f.name),是你要打开的文件吗? -
我不确定这是否是一个错字,但
readlines()会读取文件的所有行。你已经混合readline和readlines有一段时间了。 -
file.readline()返回一行。如果语句在 Python shell 提示符下执行(如教程示例中所示),则将显示返回值。如果语句在脚本中运行,那么您必须print返回的值才能显示在(发送到)stdout
标签: python file text return return-value