在这个例子中。
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?
in_file = open(from_file)
indata = in_file.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()
out_file = open(to_file, 'w')
out_file.write(indata)
print "Alright, all done."
out_file.close()
in_file.close()
第8行到第9行的我不能这样写吗?
indata = open(from_file, 'r')
答案 0 :(得分:2)
抱歉,我发现我误解了你的问题。更新了我的回复。
根据the documentation 'r'
只是“模式”的默认值。所以这两行是等价的。
in_file = open(from_file)
in_file = open(from_file, 'r')
每个“模式”代表您可以对刚刚打开的文件执行的操作。文档中描述的所有可能选项均为:
'r' open for reading (default)
'w' open for writing, truncating the file first
'x' open for exclusive creation, failing if the file already exists
'a' open for writing, appending to the end of the file if it exists
'b' binary mode
't' text mode (default)
'+' open a disk file for updating (reading and writing)
'U' universal newlines mode (deprecated)
模式b
,t
和+
应与其他模式结合使用。 (例如,r+b
允许您在不截断文件的情况下读取和写入文件,假设它是二进制文件。)
如果您只想从文件中获取文字,可以直接致电.read()
indata = open(from_file).read()
然而,就我个人的偏好而言,较少的线条并不一定意味着更好。最佳实践通常是一种处理文件处理(如关闭)的所有副作用的方法,如下所示:
with open(from_file) as in_file:
indata = in_file.read()
这个问题here包含了人们对该主题的看法的一个很好的总结。