练习 16. 读写文件

    • close - 关闭文件,就像编辑器中的 “文件->另存为”一样。
    • read - 读取文件内容。你可以把读取结果赋给一个变量。
    • readline - 只读取文本文件的一行内容。
    • truncate - 清空文件。清空的时候要当心。
    • seek(0) - 把读/写的位置移到文件最开头。

    这些都是你需要知道的一些非常重要的命令。其中一些要用到参数,但是我们暂且不去重点关注。你只需要记住 命令需要你提供一个你要写入的文件的字符串参数。

    让我们用这些命令做一个小小的编辑器:

    ex16.py

    事实上你应该看到两样东西,首先是你新脚本的输出结果:

    练习 16 会话

    1. $ python3.6 ex16.py test.txt We're going to erase test.txt.
    2. If you don't want that, hit CTRL-C (^C). If you do want that, hit RETURN.
    3. ?
    4. Opening the file...
    5. Truncating the file. Goodbye!
    6. Now I'm going to ask you for three lines.
    7. line 2: Its fleece was white as snow
    8. line 3: It was also tasty
    9. And finally, we close it.

    现在,用编辑器打开你创建的文件(比如我的是 test.txt),检查一下是不是对的。

    • 如果你理解不了这个练习,回过头去按照给每行加注释的方法再过一遍,注释能帮助你理解每一行的意思,至少让你知道你不理解的地方在哪里,然后动手去查找答案。
    • 写一个类似于上个练习的脚本,使用 readargv 来读取你刚刚创建的文件。
    • 这个练习中有太多的重复,试着用一个 target.write() 命令来打印 line1、line2、line3,你可以使用字符串、格式字符串和转义字符。
    • 如果你用 w 模式打开文件,那你还需要 target.truncate() 吗? 读一读 Python 的 open 函数文件,来搞明白这个问题。

    到底是什么意思? 它真的只是一个有字符的字符串,来表示文件的一种模式。如果你用了 'w' ,就代表你说“用 ‘write’ 模式打开这个文件。此外还有 'r' 表示 read 模式,'a' 表示增补模式,后面还可能加一些修饰符(modifiers)。

    我能对文件使用哪些修饰符? 目前最重要的一个就是 + ,你可以用 'w+''r+' 以及 'a+'。这样会让文件以读和写的模式打开,取决于你用的是那个符号以及文件所在的位置等。

    如果只输入 open(filename) 是不是就用 'r' (读)模式打开? 是的,那是 函数的默认值。