发布时间:2017-11-12 17:48:07编辑:Run阅读(5727)
练习代码如下
# coding: utf-8
__author__ = 'www.py3study.com'
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)
特别注意,每次运行print_a_line时,是怎么传递当前的行号信息的
应该看到的结果
常见问题
print_all和其它函数里的f是什么?
f只是一个变量名而已,不过在这里它指的是一个文件
为什么文件里会有间隔空行?
readline()函数返回的内容中包含文件本来就有的\n,而print在打印时又会添加一个\n
为什么seek(0)没有把current_line设为0?
首先seek()函数的处理对象是字节而非行,所以seek(0)只是转到文件的0字节
+=是什么?
这个是把=和+简写到一起了,x += y 的意思和 x = x +y 是一样的
readline()是怎么知道每一行在哪里的?
readline()里边的代码会扫描文件的每一个字节,直到找到一个\n为止,然后它停止读取文件,并且返回此前的文件内容,文件f会记录每次调用readline()后的读取位置,这样它就可以在下次被调用时读取接下来的一行了
上一篇: 习题19:函数和变量
下一篇: 习题21:函数可以返回东西
48000
46616
37563
34919
29481
26131
25085
20111
19738
18210
5920°
6577°
6082°
6084°
7197°
6026°
6113°
6585°
6553°
7938°