习题 17: 更多文件操作 *********************** 现在让我们再学习几种文件操作。我们将编写一个 Python 脚本,将一个文件中的内容\ 拷贝到另外一个文件中。这个脚本很短,不过它会让你对于文件操作有更多的了解。 .. literalinclude:: ex/ex17.py :linenos: 你应该很快注意到了我们 ``import`` 了又一个很好用的命令 ``exists``\。这个命令\ 将文件名字符串作为参数,如果文件存在的话,它将返回 ``True``\,否则将返回 ``False``\。\ 在本书的下半部分,我们将使用这个函数做很多的事情,不过现在你应该学会\ 怎样通过 ``import`` 调用它。 通过使用 ``import`` ,你可以在自己代码中直接使用其他更厉害的(通常是这样,不过也不 尽然)程序员写的大量免费代码,这样你就不需要重写一遍了。 你应该看到的结果 =================== 和你前面写的脚本一样,运行该脚本需要两个参数,一个是待拷贝的文件,一个是要拷贝至的\ 文件。如果我们使用以前的 ``test.txt`` 我们将看到如下的结果: .. literalinclude:: ex/ex17.txt :language: console 该命令对于任何文件都应该是有效的。试试操作一些别的文件看看结果。不过小心别把你的重要\ 文件给弄坏了。 .. warning:: 你看到我用 ``cat`` 这个命令了吧?它只能在 Linux 和 OSX 下面使用,使用 Windows 的就只好跟你说声抱歉了。 加分习题 ============ 1. 再多读读和 ``import`` 相关的材料,将 ``python`` 运行起来,试试这一条命令。试着看看\ 自己能不能摸出点门道,当然了,即使弄不明白也没关系。 2. 这个脚本 *实在是* 有点烦人。没必要在拷贝之前问一遍把,没必要在屏幕上输出那么多东西。\ 试着删掉脚本的一些功能,让它使用起来更加友好。 3. 看看你能把这个脚本改多短,我可以把它写成一行。 4. 我使用了一个叫 `cat` 的东西,这个古老的命令的用处是将两个文件“连接(con*cat*enate)”\ 到一起,不过实际上它最大的用途是打印文件内容到屏幕上。你可以通过 ``man cat`` 命令了解到更多信息。 5. 使用 Windows 的同学,你们可以给自己找一个 ``cat`` 的替代品。关于 ``man`` 的东西就\ 别想太多了,Windows 下没这个命令。 6. 找出为什么你需要在代码中写 ``output.close()`` 。