gpt4 book ai didi

python - 艰苦学习Python ex20,这个函数是如何工作的?

转载 作者:行者123 更新时间:2023-11-30 23:29:48 25 4
gpt4 key购买 nike

我正在学习 python,之前没有任何编码经验,这是我现在不明白的事情。

这是完整的代码:

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)

最后一部分应该像这样打印:

Now let's rewind, kind of like a tape.
Let's print three lines:
1 This is line 1
2 This is line 2
3 This is line 3

我不明白的部分是最后几行。 “current_file” block 如何理解它必须首先仅打印一行,其次它如何知道它应该与“current_line”想要的同一行?

最佳答案

每次调用 .readline() 时,文件对象都会前进; current_line 变量仅用于提供行号。这两者并没有真正的关系。

尝试删除 current_line = current_line + 1 行,它将打印:

Now let's rewind, kind of like a tape.
Let's print three lines:
1 This is line 1
1 This is line 2
1 This is line 3

您可以将 current_line 想象为您自己的个人记事本,用于记录计数,只是为了验证行确实在前进。如果您忘记写下下一个数字,文件不会关心并继续前进。

文件很像磁带;每次您从中读取数据时,读写“头”都会沿着“磁带”前进,以便下一次读取或写入操作发生在该新位置。

“头”只是一个数字,即文件中的位置,由操作系统管理。您始终可以使用 file.tell() method 询问文件的当前位置。 。如果将 print f.tell() 行添加到 print_a_line() 函数,它将打印头部当时所在的位置。

最后但并非最不重要的一点是,正如 rewind() 函数已经显示的那样,file.seek() method让您将“头部”重新定位到新位置。 f.seek(0) 将其放回到开始位置。

关于python - 艰苦学习Python ex20,这个函数是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20969536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com