python - 如何在python中获取当前打开的文件行?

标签 python file seek line-count

假设您打开一个文件,并在文件中的某处执行 seek(),您如何知道当前文件行?

(我个人解决了一个临时文件类,该文件类在扫描文件后将搜索位置映射到行,但我想查看其他提示并将此问题添加到 stackoverflow,因为我无法找到谷歌上任何地方的问题)

最佳答案

当您使用 seek() 时,python 将使用指针偏移量跳转到文件中的所需位置。但是为了知道当前行号,您必须检查到该位置的每个字符。所以你最好放弃 seek() 以支持 read():

替换

f = open(filename, "r")
f.seek(55)

f = open(filename, "r")
line=f.read(55).count('\n')+1
print(line)

也许您不希望使用 f.read(num),因为如果 num 非常大,这可能需要大量内存。在这种情况下,您可以使用这样的生成器:

import itertools
import operator
line_number=reduce(operator.add,( f.read(1)=='\n' for _ in itertools.repeat(None,num)))
pos=f.tell()

这等同于 f.seek(num) 具有为您提供 line_number 的额外好处。

关于python - 如何在python中获取当前打开的文件行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1809232/

相关文章:

python - 在 pydev 中使用 unittest 在 Python 中对整个项目层次结构进行单元测试

安卓文件处理

windows - 使用 powershell 和 cmd 创建带有定义的 .h 文件

Python seek() 没有将指针移动到正确的位置

Python:seek(0) 和 open() 本质上是做同样的事情吗?

python - 根据特定条件替换值

python - 如何使用前一行值以及同一行中其他列中的值来计算 Pandas 中列的值

java - 单击按钮时的递归搜索文件方法

c - lseek 可以进行文件重定向吗?

python - pandas 中的 drop_first 有什么用?