这个习题我们将学习到文件操作的另外一个库 os.path和一个新命令:exists(这个命令将文件名称作为参数,如果文件存在返回True,如果不存在返回False.同时新建此文件)。
另外通过这个习题,我们对文件的读取、写入会有更深的理解。
代码如下:
#-*-coding:utf-8-*-
from sys import argv
from os.path import exists
script , from_file , to_file = argv
print"Copy from %s to %s"%(from_file , to_file)
#we coule do these two on line too ,how?
in_file = open(from_file)
indata = in_file.read()
#以上两句可以写成一句:indata = open(from_file).read()
print"The input file is %d byte 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()
out_file = open(to_file , 'w')
out_file.write(indata)
print"Alright,all done."
out_file.close()
in_file.close()
print"The contents of to_file is %r" %open(to_file).read()
在运行这个习题时,需要明确两点:
1,open输入时参数,返回的是object。所以如果open()括号里面的内容不是文件名,而是对象时,运行会报错比如mark黄色部分若改为:
print"The contents of to_file is %r" %open(out_file).read()
报错信息如下:
print"The contents of to_file is %r" %open(out_file).read()
TypeError: coercing to Unicode: need string or buffer, file found
2,read是对象的方法,所以其必须跟在一个对象的后面。