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)

-im 使用 python 2.7

谢谢你的时间

4

2 回答 2

7

我会尝试阅读这篇文章tutorials point

文章的顶部应该可以帮助您:

fileObject.seek(offset[, whence])

该方法seek()将文件的当前位置设置为offset. 该whence参数是可选的,默认为0,表示绝对文件定位;其他值是:1,表示相对于当前位置的搜索,以及 2,表示相对于文件结尾的搜索

所以在你的代码中,这在函数内部rewind()被调用,在这一行被调用:

rewind(current_file)

其中:

f.seek(0)

叫做。

因此,它在您的代码中所做的是将文件中的当前位置移动到开头索引 0)。在代码中使用 this 是在前几行中,整个文件只是被读取,所以位置在文件的最后。这意味着对于未来的事情(例如调用f.readline()),您将在错误的位置,而您希望在开始 - 因此.seek(0).

于 2017-10-25T12:04:14.267 回答
0

如果您更改为 def rewind(f): f.seek(2) 您看不到 input_file 的前两个字母 ..in TERMINAL NOT IN ORIGINAL FILE

于 2018-05-23T01:29:01.033 回答