跟着笨方法学python个教程学习,边学边做习题边记录。
新手学python-笨方法学python-ex17-更多文件操作 - 学习记录
课程内容:
现在让我们再学几种文件操作。我们将编写一个Python脚本,将一个文件中的内容拷贝到另外一个文件中。这个脚本很短,不过它会让你对于文件操作有更多的了解。
from sys import argv
from os.path import exists
script, from_file, to_file = argv
print "Copying from %s to %s" % (from_file, to_file)
#we could do these two on one line too, how?
input = open(from_file)
indata = input.read()
print "The input file is %d bytes long" % len(indata)
print "Does the output file exist? %r" % exists(to_file)
print "Ready, hit RETURN to continue, CTRL-C to abort."
raw_input()
output = open(to_file, 'w')
output.write(indata)
print "Alright, all done."
output.close()
input.close()
你应该很快注意到了我们import了又一个很好用的命令exists。 这个命令将文件名字符串作为参数,如果文件存在的话,它将返回True,否则将返回False。在本书的下半部分,我们将使用这个函数做很多的事情,不过现在你应该学会怎样通过import调用它。
通过使用import,你可以在自己的代码中直接使用其他更厉害的程序员写的大量免费代码,这样你就不需要重写一遍了。
运行上面的程序:
C:\Documents and Settings\Administrator>python ex17.py ex17-sample.txt copied.txt
We are going to copy ex17-sample.txt to copied.txt
The input file is 80 bytes long.
Does the output file exist? False.
Ready, hit RETURN to continue, or hit CTRL-C to abort.
?
Allright, all done.
$
我们再看看copied.txt这个文件的内容,跟ex17-sample.txt的一样:
To all the people out there.
I say I don't like my hair.
I need to shave it off.
该命令对于任何文件都应该是有效的。试试操作一些别的文件看看结果。不过小心别把你的重要文件给弄坏了。
加分习题:
1.再多读读和 import 相关的材料,将 python 运行起来,试试这一条命令。试着看看自己能不能摸出点门道,当然了,即使弄不明白也没关系。
2.这个脚本 实在是 有点烦人。没必要在拷贝之前问一遍把,没必要在屏幕上输出那么多东西。试着删掉脚本的一些功能,让它使用起来更加友好。
from sys import argv
script, from_file, to_file = argv
print "We will copy %s to %s." % (from_file, to_file)
input = open(from_file)
indata = input.read()
output = open(to_file, 'w')
output.write(indata)
output.close
input.close
3.看看你能把这个脚本改多短,我可以把它写成一行。
暂时只能改成这样,运行成功,但是没办法close()。
4.我使用了一个叫 cat 的东西,这个古老的命令的用处是将两个文件“连接(con*cat*enate)”到一起,不过实际上它最大的用途是打印文件内容到屏幕上。你可以通过 man cat 命令了解到更多信息。
5.使用 Windows 的同学,你们可以给自己找一个 cat 的替代品。关于 man 的东西就别想太多了,Windows 下没这个命令。
6.找出为什么你需要在代码中写 output.close() 。
至此,笨方法学Python-ex17-更多文件操作这一小节的学习结束了。