Python:seek(0)和open()基本上做同样的事情吗?

时间:2016-10-20 00:18:16

标签: python seek

所以我正在努力学习python"练习20,课程介绍" seek()"用于引用文件的函数。在这种情况下,我们有:

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

创建一个调用seek(0)的函数,这意味着将引用指向程序中使用的文件的开头。现在,在几节课中,我们已经分配了一个用于打开文件的变量,在本例中为current_file = open(input_file)

我的问题是,使用seek从开头用(0)打开文件是否与再次使用open命令相同,如open(current_file)。如果有的话有什么区别?以下是整个课程的代码:

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 let's print the whole file:\n"

print_all(current_file)

print "Now let's rewind, kind of like a tape."

rewind(current_file)

print "Let's print three lines:"

current_line = 1
print_a_line(current_line, 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)

1 个答案:

答案 0 :(得分:3)

不,因为正如您的示例代码所示,seek适用于打开文件对象,而open适用于文件名。差异有点微妙,一个简短的例子可能会让它更清晰:

f = open('myfile.txt')
f.seek(5) 

你总是可以重新打开文件而不是寻求零,但这将是额外的开销。