相关疑难解决方法(0)

Python:撤消文件readline()操作,使文件指针恢复原始状态

我正在使用file.readline()查找特殊行,以只读模式浏览文本文件的Python文件指针.一旦找到该行,我想将文件指针传递给一个方法,该方法期望文件指针位于该readline的START位置(不在它之后).

我如何在文件指针上实质上撤消一个file.readline()操作?

python file-io readline readlines

32
推荐指数
3
解决办法
4万
查看次数

有没有办法找到文件对象的缓冲区大小

我正在尝试“映射”一个非常大的 ascii 文件。基本上,我会读取行,直到找到某个标签,然后我想知道该标签的位置,以便稍后再次查找它以提取相关数据。

from itertools import dropwhile
with open(datafile) as fin:
    ifin = dropwhile(lambda x:not x.startswith('Foo'), fin)
    header = next(ifin)
    position = fin.tell()
Run Code Online (Sandbox Code Playgroud)

现在这tell并没有给我正确的位置。这个问题以前已经以各种形式被问过。原因大概是因为 python 正在缓冲文件对象。所以,python 告诉我它的文件指针在哪里,而不是我的文件指针在哪里。 我不想关闭这个缓冲......这里的性能很重要。然而,如果知道是否有一种方法可以确定 python 选择缓冲多少字节,那就太好了。在我的实际应用程序中,只要我关闭以 开头的行Foo,就没有关系。我可以到处写几行。所以,我实际上计划做的是这样的:

position = fin.tell() - buffer_size(fin)
Run Code Online (Sandbox Code Playgroud)

有什么办法可以找到缓冲区大小吗?

python file io-buffering

5
推荐指数
1
解决办法
3016
查看次数

标签 统计

python ×2

file ×1

file-io ×1

io-buffering ×1

readline ×1

readlines ×1