python - 从文件中读取一行而不推进 [Pythonic 方法]

标签 python

从文件中读取一行但不前进文件中的位置的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/

相关文章:

python - 在组中创建带有条件的 random.randint?

python - 如何向 Django 项目添加批处理请求?

python - 这个lcm python代码我做错了什么?

python - 如何使用特定的列索引对 numpy 2D 数组行进行降序或升序排序

python - 为什么此循环的迭代没有在 openpyxl 中添加单元格?

python - Foursquare API 请求在版本参数上返回错误

python - 如何拆分字符串并选择特定字段

python - 如何打印requirement.txt中每个包的安装时间

python - 如何使用 Mimemultipart 在 Python 中发送邮件

python - 有没有更简单的方法用 Python 打包?