笨方法学Python-习题20-函数和文件

在接触函数之前,我们一起学习了关于文件的一些操作,下面这道习题就是要把文件操作和函数结合起来。请看源码:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

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. 定义了3个函数。第一个打印文件内容;第二个重置到文件头位置;第三个按行打印文件内容。
  2. 打开指定文件。
  3. 打印指定文件的所有内容。
  4. 将文件头位置为文件开始处。
  5. 连续打印3行文件内容。

下面给出文件内容:

This is line 1
This is line 2
This is line 3

文件内容有了,我想你们一定可以看出运行上述程序,输出的内容是什么了。和下面的运行结果一样吧?如果不一样,那你可要好好想想自己错在哪里了。

ex20运行结果

需要注意的是,函数定义中的f入参是什么?很明显是一个文件,Python是一种动态类型的语言,不会显示指定某个变量是何类型,这点和静态类型语言是有很大不同的。另外,你要想想在逐行打印那里,如果我打印一行后,如果再调用一次rewind函数会怎样?

小结

  1. 文件操作和函数的结合。

你可能感兴趣的:(笨方法学Python-习题20-函数和文件)