笨方法学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. 文件操作和函数的结合。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容