新的打开文件模式“x”在python 3中做了什么?
这是python 3的文档:
'r':打开阅读(默认)
'w':打开写入,先截断文件
'x':打开以进行独占创建,如果文件已存在则失败
'a':打开写入,如果存在则附加到文件末尾
'b':二进制模式
't':文字模式(默认)
'+':打开磁盘文件进行更新(读写)
'U':通用换行模式(已弃用)
“独家创作”是什么意思?
我测试“x”模式并找到一些:
open
之前不得存在open
之后创建所以,“x”类似于“w”。但对于“x”,如果文件存在,则引发FileExistsError。对于“w”,它只会创建一个新文件/截断现有文件。
我对吗?这是唯一的区别吗?
正如@Martjin已经说过,你已经回答了自己的问题。我只会放大手册中的解释,以便更好地理解文本
'x':打开以进行独占创建,如果文件已存在则失败
当您指定exclusive creation
时,它显然意味着,您将使用此模式专门创建文件。当您不会意外地使用w
或a
模式截断/追加现有文件时,需要这样做。
如果没有这个,开发人员在跳过打开文件进行更新之前应该小心检查文件是否存在。
使用此模式,您的代码将被简单地写为
try:
with open("fname", "x") as fout:
#Work with your open file
except FileExistsError:
# Your error handling goes here
以前虽然您的代码可能已被编写为
import os.path
if os.path.isfile(fname):
# Your error handling goes here
else:
with open("fname", "w") as fout:
# Work with your open file
是的,基本上就是这样。
如果您可能发现程序的两个实例同时运行,那么使用x
模式将确保只有一个成功创建文件,另一个失败。
一个典型的例子是将其进程ID写入pid
文件的守护进程(因此可以很容易地发出信号)。通过使用x
,您可以保证一次只能运行一个守护进程,没有x
模式就更难做到,并且容易出现竞争条件。
简单来说,使用'x'
模式打开文件意味着:
原子上做:(检查是否存在并创建文件)