混淆了Python中的readline()返回

xia*_*shi 1 python

我是python的初学者.但是,当我尝试使用readline()方法时,我遇到了一些问题.

f=raw_input("filename> ")
a=open(f)
print a.read()
print a.readline()
print a.readline()
print a.readline()
Run Code Online (Sandbox Code Playgroud)

和我的txt文件是

aaaaaaaaa
bbbbbbbbb
ccccccccc
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在Mac终端上运行它时,我得到了这个:

aaaaaaaaa
bbbbbbbbb
ccccccccc
Run Code Online (Sandbox Code Playgroud)

似乎readline()根本不起作用.但是当我禁用print a.read()时,readline()会恢复工作.

这让我很困惑.有什么解决方案可以同时使用read()和readline()吗?

fre*_*ish 5

当您打开文件时,您会获得指向文件某个位置的指针(默认情况下:开头).现在无论何时运行.read().readline()此指针移动:

  1. .read() 读取直到文件结束并将指针移动到结尾(因此进一步调用任何读数都不会产生任何结果)
  2. .readline() 读取直到看到换行符并在其后面设置指针
  3. .read(X)读取X字节并将指针设置为CURRENT_LOCATION + X(或结束)

如果您希望可以通过发出a.seek(X)调用来手动移动该指针,其中X是文件中的一个位置(看作一个字节数组).例如,这应该为您提供所需的输出:

print a.read()
a.seek(0)
print a.readline()
print a.readline()
print a.readline()
Run Code Online (Sandbox Code Playgroud)