带有os.SEEK_CUR和os.SEEK_SET的python file.seek()

时间:2013-10-19 21:57:59

标签: python file python-2.7 file-io

这两者有什么区别吗?

A:

# seek back by difference from current position
fp.seek(last_read_byte - fp.tell(), os.SEEK_CUR)

B:

# seek by absolute position from start of the file
fp.seek(last_read_byte)

fp是一个python文件对象)

我只是认为 B)可能会从头开始读取文件。我如何检查是否是这种情况? 我应该担心这样的蠢事吗?

1 个答案:

答案 0 :(得分:4)

调用搜索不会从头开始重读整个文件。

我会使用绝对的寻求 - 它更简单,正确,阅读;它不会浪费额外的系统调用来告诉;如果文件在调用之间发生变化,它就没有竞争条件......

如果你担心性能,那么测试性能不仅比测试性能更有用,而且更容易,而不是试图猜测它是如何工作的,然后尝试猜测性能影响是什么。只需创建一个大文件,并在一个时间内尝试两个版本。