Python,“打开”和“打开”之间的区别

fra*_*ium 3 python file

我没有用过这个with语句,但对它的用途有些熟悉。使用以下代码,该#1块按预期工作,但是#2- 在这里纠正我,应该做与第一个相同的事情 - 引发以下异常FileExistsError: [Errno 17] File exists: 'mydir'

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()   
Run Code Online (Sandbox Code Playgroud)

Lee*_*idt 6

第 1 部分:open和之间的区别with open

基本上,使用with只是确保您不会忘记close()文件,使其更安全/防止内存问题。

第 2 部分: FileExistsError

这是操作系统错误,因此可能是操作系统特定的。不过,假设您要覆盖(截断)前一个文件,您的语法是正确的。

这可能就是问题是特定于操作系统的,而大多数其他用户无法复制该问题的原因。

但是,如果它导致问题,您可以尝试使用w+模式,它可能会解决问题。

这里记录了一个类似的问题。

编辑:我刚刚注意到关于teams最初是路径的评论流。很高兴它得到了修复!