Python,如果存在,则打开以供写入,否则将引发

2024-04-23 06:56:57 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一个选项可以传递open()在试图写入不存在的文件时导致IOerror?我使用python通过符号链接读写块设备,如果链接丢失,我希望引发一个错误,而不是创建一个常规文件。我知道我可以添加一个检查文件是否存在并手动引发错误,但是如果存在,我更希望使用内置的东西。在

当前代码如下:

device = open(device_path, 'wb', 0)
device.write(data)
device.close()

Tags: 文件path代码链接device选项错误符号
3条回答

每次执行检查都是一件麻烦事,但您始终可以包装open()

import os

def open_if_exists(*args, **kwargs):
    if not os.path.exists(args[0]):
        raise IOError('{:s} does not exist.'.format(args[0]))
    f = open(*args, **kwargs)
    return f

f = open_if_exists(r'file_does_not_exist.txt', 'w+')

这是快速和肮脏的,所以它不允许用作:with open_if_exists(...)。在

更新

缺少一个上下文管理器困扰着我,所以这里是:

^{pr2}$

是的。在

open(path, 'r+b')

指定“r”选项意味着文件必须存在并且您可以读取。 指定“+”意味着您可以写,并且您将被定位在末尾。 https://docs.python.org/3/library/functions.html?#open

使用^{}^{}检查文件是否存在。在

相关问题 更多 >