def defwind(f)的解释:f.seek(0)

时间:2017-10-25 11:57:45

标签: python function seek rewind

我正在读一本书,其中有一行代码中有一行

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

感谢您的时间

2 个答案:

答案 0 :(得分:3)

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

文章的顶部应该可以帮到你:

  

<强> fileObjecy.seek(offset[, whence])

     

方法seek()设置文件在偏移处的当前位置。 whence参数是可选的,默认为0,表示绝对文件定位,其他值为1表示相对于当前位置的搜索,2表示相对于文件结束的搜索。

所以在你的code中,它会在函数rewind内调用,在line上调用:

rewind(current_file)

其中:

f.seek(0)

被召唤。

因此,您在代码中执行的操作是将position中的当前file移至开始index 0)。在代码中使用此代码的是,在之前的lines上,整个file只是read,因此position位于{{1}的最后}}。这意味着对于未来的事情(例如调用file),您将处于错误的位置。虽然你想成为开始 - 因此f.readline()

答案 1 :(得分:0)

如果您更改为,则文件中会发生更改 def倒带(f):     f.seek(2) 你看不到input_file..in TERMINAL的前两个字母 不在原始文件中