所以我正在阅读Python文档/教程,特别是我正在查看带文件的输入/输出。这是教程所说的将在文件中返回whatevers:
>>> 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。
答案 0 :(得分:2)
我想出了一个非常相似的问题的答案,以防有人过来找。因此,在Python中,如果您在readline()
之前运行了readlines()
代码,那么它已经遍历了这些行。
尝试退出,仅输入readlines()
作为文件,它将为您提供完整列表。
答案 1 :(得分:0)
如果您想逐行读取文件,这将是一个更好的选择。 f:'中的'以列表的形式迭代文件。 '线'变量包括尾随' \ n'或者' \ r \ n',所以你想剥去那些。
''语句确保即使程序在读取文件时抛出异常,文件也会关闭。
with open('test.txt','r') as f:
for line in f:
print(line.rstrip('\n'))
输出:
$ python test.py
Hello This Is Test
For Loops In Files
Flying Away
A Bird also Flies
Wow
使用readlines:
open('test.txt','r') as f:
lines = f.readlines()
for line in lines:
print(line.rstrip('\n'))
readlines将文件转换为内存中的列表。如果你必须阅读一个大文件,那就没有效率。
同时使用:
with open('test.txt','r') as f:
line = f.readline()
print(line.rstrip('\n'))
print
lines = f.readlines()
for line in lines:
print(line.rstrip('\n'))
输出:
$ python test.py
Hello This Is Test
For Loops In Files
Flying Away
A Bird also Flies
Wow
从python控制台:
$ python
Python 2.7.8 (default, Jul 28 2014, 01:34:03)
[GCC 4.8.3] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> f = open('test.txt')
>>> f.readlines()
['Hello This Is Test\n', 'For Loops In Files\n', 'Flying Away\n', 'A Bird also Flies\n', 'Wow\n', '\n']
>>> f.close()
答案 2 :(得分:0)
f.readlines()在列表中一次性返回所有行,例如:
f=open('test.txt')
f.readlines()
['Hello This Is Test\n', 'For Loops In Files\n', 'Flying Away\n', 'A Bird also Flies\n', 'Wow']
对于f.readline()将从光标直到文件末尾开始逐行返回行,您的示例输出将为:
f=open('test.txt')
f.readline()
'Hello This Is Test\n'
f.readline()
'For Loops In Files\n'
f.readline()
'Flying Away\n'
f.readline()
'A Bird also Flies\n'
f.readline()
'Wow'
f.readline()
''#empty string
将光标设置为文件的开头,使用seek(0)
答案 3 :(得分:0)
答案 4 :(得分:-1)
如果您要使用 readline ,则必须移动光标。它每次都像seek [0],它将光标移动到起点。
您可以使用 readlines()方法。
readlines=f.readlines()
for i in readlines:
print (i)