关于 def rewind(f) 的解释:f.seek(0)

Explanation about def rewind(f): f.seek(0)

我正在看书,有一个代码里面有这一行

def rewind(f):
    f.seek(0)

这是我无法理解的台词 你能解释一下这是怎么回事吗?

 from sys import argv

script, input_file = argv

def print_all(f):
    print f.read()

def rewind(f):
    f.seek(0)

def print_a_line(line_count, f):
    print line_count, f.readline()

current_file = open(input_file)

print " first lets print the whole file:\n"

print_all(current_file)

print "now lets rewind, kind of like a tape."

rewind(current_file)

print "lets print three lines:"

current_line = 1
print_a_line(current_l, current_file)

current_line = current_line + 1
print_a_line(current_line, current_file)

current_line = current_line + 1
print_a_line(current_line, current_file)

-我使用 python 2.7

感谢您的宝贵时间

我会尝试在 tutorials point 上阅读 this post

文章顶部应该对您有所帮助:

fileObject.seek(offset[, whence])

The method seek() sets the file's current position at offset. The whence argument is optional and defaults to 0, which means absolute file positioning; other values are: 1, which means seek relative to the current position, and 2, which means seek relative to the file's end.

所以在您的代码中,这是在函数 rewind() 中调用的,它是在这一行调用的:

rewind(current_file)

其中:

f.seek(0)

被调用。

所以它在您的代码中所做的是将文件中的当前位置移动到 start (index 0)。 this在代码中的使用是在前面几行中,刚刚读取了整个文件,所以位置是在文件的最末尾。这意味着对于未来的事情(例如调用 f.readline()),你会在错误的地方,而你想在开头 - 因此 .seek(0).

如果您更改为 定义倒带(f): f.seek(2) 你在 TERMINAL 中看不到 input_file.. 的前两个字母 不在原始文件中