我正在读一本书,其中有一行代码中有一行
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
感谢您的时间
答案 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的前两个字母 不在原始文件中