关于文件:python,”open”和”with open”的区别

Python, difference between 'open' and 'with open'

本问题已经有最佳答案,请猛点这里访问。

我没有使用with语句,但对它的用途有些熟悉。在下面的代码中,#1块按预期工作,但是#2块(在这里纠正我,应该和第一个块一样)抛出下面的异常FileExistsError: [Errno 17] File exists: 'mydir'

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import os

if not(os.path.exists('mydir')):
    os.makedirs('mydir')

path = 'mydir'
filename = 'msg.txt'
filename2 = 'msg2.txt'

#1
with open(os.path.join(path, filename), 'w') as temp_file:
    temp_file.write("hello")

#2
temp_file = open(os.path.join(path, filename2), 'w')
temp_file.write("hello again")
temp_file.close()


(P)这一错误是由一个预发版本的邮编脚本造成的。它看起来像这样:(p)字母名称(P)这项测试是为了验证EDOCX1目录的存在6,但有三种方法可以创建一个新的EDOCX1(p)(P)Suggested solution:use variable names for everything,don't hardwire strings for paths:(p)字母名称(P)是的,波思?爱多克X1,9-音标和EDOCX1,10-音标-DO essentially the same。但是,EDOCX1的英文本第2种语言的说明也在写作过程中复制了文件。(p)


(P)第1部分:EDOCX1(音译)和EDOCX1(音译)(p)(P)Basically,using EDOCX1 penographic 2 just ensures that you don't forget to EDOCX1 penographic 3 commercial.The file,making it safer/preventing memory issues.(p)(P)第二部分:EDOCX1音标4(p)(P)这是一个错误,因此,可能会具体说明。你的Syntax is correct though,assuming that you want to overwrite(truncate)the previous file.(p)(P)这可能是为什么这个问题是一个具体的问题,而大多数其他用户是无法重复这个问题的。(p)(P)然而,如果这是一个问题,你可以尝试使用EDOCX1的英文第5个字母,莫德和它可以fix the issue。(p)(P)a类似的问题在这里有记录。(p)(P)Edit:I just noticed the comment stream about EDOCX1 penal 6 originally being the path.Glad it got fixed!(p)