当我将以下内容键入.py文件(使用版本2,如果这很重要)并运行时,
f=open('file.txt','r')
for line in f:
print line
我的文件'file.txt'的所有行都打印在shell中。
当我在.py文件中输入以下内容并运行时,
f=open('file.txt','r')
f.readlines()
我得到一个空输出。如果进入shell中的命令行,则输入以下内容,输出为:
f.readlines()
[] # output is just these empty brackets
最后,当我开始shell并输入时, F =开放( 'file.txt的', 'R')
f.readlines()
它可以完美打印我文件的所有行。
为什么“打印行”从.py文件起作用,但“f.readlines()”给出空输出?为什么shell命令行中的附加f.readlines()会在程序运行后给出[]?
答案 0 :(得分:3)
您看到的问题是您希望Python中的每个调用都能打印出来。实际上,大多数时候调用只返回某种或那种类型的数据。
交互式Python shell的行为使得它打印函数调用的返回值。
打印结果的正确方法是使用print
:
f = open('file.txt','r')
print(f.readlines())
答案 1 :(得分:0)
这些命令是否全部按顺序排列?如果是这样,第一个for循环将带您到文件的末尾。您需要在文件的开头再次开始,以通过以下对f.readlines()
的调用获得所需的输出。要在python中执行此操作,您可以使用f.seek(0)
将您带回文件的开头。您需要在每个f.readlines()
之间执行此操作,或者在迭代文件的循环之间执行此操作。这也是一个更适合stackoverflow而不是程序员的问题。
f=open('file.txt','r')
for line in f:
print line
f.seek(0)
f.readlines()
希望这会有所帮助。