私は "学習するpythonの難しい道"演習20に取り組んでいます。レッスンでは、ファイルを参照するための "seek()"関数が導入されています。この場合において、我々は: Python:seek(0)とopen()は本質的に同じことをしていますか?
def rewind(f):
f.seek(0)
シーク起動する関数を作成(0)、プログラムで使用されるファイルの先頭に基準点を作ることを意味します。さて、いくつかのレッスンでは、ファイルを開くために使用する変数(この場合はcurrent_file = open(input_file)
)を割り当てました。
私の質問は、先頭から(0)を使ってファイルを開くためにseekを使用するかどうかは、open(current_file)
のようにopenコマンドを再度使用するのと同じことです。もしあれば、違いは何ですか?ここでは全体のレッスンのためのコードは次のとおりです。
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)
Seekはファイルを開かず、現在のファイルを巻き戻します。私はそれがあなたが意味するものだと確信していますが、 "最初からファイルを開く(0)"という名前の_を使用してファイルをオープンしようとします。明確にすることはできますか? – tdelaney
btw 'open(...、" a ")'はファイルを開き、 'seek(0、2)'を行うようにポインタをファイルの最後に移動します。 – furas
FYI:http://sopython.com/wiki/LPTHW_Complaints – jonrsharpe