没有传递给open() - python

我有一个上下文管理器来处理大量的逻辑

with open(file_name1, 'rb') as file1:
  with open(file_name2, 'a+b') as file2:
    logic_here

不幸的是,在某些情况下file_name2可能是None。但是,我仍然希望执行logic_here。是否有一种优雅的方式来处理此问题而无需删除上下文管理器?看来我可能需要使用try / catch并在文件上手动调用.close()

从理论上讲,我不介意仅打开任何文件,我也不关心发生的写入的内容。我确实希望避免创建太多要写入的临时文件,并且也希望避免意外写入可能已经在磁盘上的个人文件。

python大神给出的解决方案

快速,可靠的解决方案,因为这似乎是您要寻找的东西:

if file_name2 is None:
    file_name2 = os.devnull

参见:https://docs.python.org/2/library/os.html#os.devnull