我想知道在python中不关闭文件os.devnull是否存在问题。我知道通常我们需要关闭打开的文件。尽管如此,我想知道是否有可能在我们不关闭它们的情况下处理 sys.stdout 或 sys.stderr。
对于普通文件,由于缓冲而不关闭它们时,您将面临丢失数据的风险。这显然不是/dev/null
关心的问题。
但是,虽然/dev/null
在技术上不是常规文件而是设备文件,但它以相同的方式使用文件描述符。您甚至可以使用fileno()
方法检查 Python 中的文件描述符:
import os
with open(os.devnull) as devnull:
print(devnull.fileno())
操作系统限制任何单个进程可以具有的打开文件描述符的数量。这不太可能成为问题,但将/dev/null
视为任何其他文件并仅出于此原因将其关闭仍然是很好的做法。