发布时间:2017-11-12 17:48:07编辑:Run阅读(5567)
练习代码如下
# 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:函数可以返回东西
47745
46237
37112
34627
29229
25886
24747
19863
19417
17909
5716°
6316°
5836°
5889°
6985°
5829°
5846°
6361°
6316°
7676°