从文件中读取一行但不前进文件中的位置的pythonic方法是什么?
例如,如果你有一个文件
cat1
cat2
cat3
然后你执行 file.readline()
你会得到 cat1\n
。下一个 file.readline()
将返回 cat2\n
。
是否有像 file.some_function_here_nextline()
这样的功能来获取 cat1\n
然后你可以稍后再做 file.readline()
和找回cat1\n
?
最佳答案
据我所知,没有内置功能,但这样的功能很容易编写,因为大多数 Python file
对象都支持 seek
和 tell
在文件中跳转的方法。所以,过程很简单:
- 使用
tell
查找文件中的当前位置。 - 执行某种
read
(或write
)操作。 寻找
回到上一个文件指针。
这使您可以做一些不错的事情,例如从文件中读取一大块数据,对其进行分析,然后可能会用不同的数据覆盖它。该功能的简单包装器可能如下所示:
def peek_line(f):
pos = f.tell()
line = f.readline()
f.seek(pos)
return line
print peek_line(f) # cat1
print peek_line(f) # cat1
您可以轻松地为其他 read
方法实现相同的功能。例如,为 file.read
实现相同的东西:
def peek(f, length=1):
pos = f.tell()
data = f.read(length) # Might try/except this line, and finally: f.seek(pos)
f.seek(pos)
return data
print peek(f, 4) # cat1
print peek(f, 4) # cat1
关于python - 从文件中读取一行而不推进 [Pythonic 方法],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16840554/