为什么同时需要out_file = open(to_file,'w')和out_file.write(in_data)?

时间:2019-04-25 17:38:48

标签: python python-2.7

所以我正在用《学习Python的艰难方法》这本书来学习python,我正在练习17。这是代码:

1 from sys import argv
2 from os.path import exists
3
4 script, from_file, to_file = argv
5
6 print "Copying from %s to %s" % (from_file, to_file)

9 in_file = open(from_file)
10 indata = in_file.read()
11
12 print "The input file is %d bytes long" % len(indata)
13
14 print "Does the output file exist? %r" % exists(to_file)
15 print "Ready, hit RETURN to continue, CTRL- C to abort."
16 raw_input()
17
18 out_file = open(to_file, 'w')
19 out_file.write(indata)
20
21 print "Alright, all done."
22
23 out_file.close()
24 in_file.close()

我的问题是,为什么这两行都是必需的?我知道为什么使用第一行,但是第二行为什么第二行呢。对我来说,如果我们删除第二行,似乎理论上的代码应该以相同的方式工作。有人可以帮我理解吗? out_file =打开(to_file,'w') out_file.write(indata)

1 个答案:

答案 0 :(得分:0)

第二行基本上覆盖了文件(to_file)的内容,因为操作模式是写模式,否则它会创建一个新文件(如果不存在)。这里的out_file是一个文件对象,通过它可以执行文件操作。 根据任务的目标猜测,基本上是在复制(写入)另一个文件,这就是为什么提到第二行的原因。

您还可以采用其他变体-

with open(to_file,'w') as out_file:
```out_file.write(indata)


the latter will automatically close the file object, thereby preventing any errors