首页 > 解决方案 > 尝试打开某些整数或 True 作为文件时,Python 没有错误

问题描述

在 Python 3.8.5 上,我希望这样的代码会出现错误:

open(1, 'w').close()

但事实并非如此。更有趣的是,如果我运行它两次,我确实会看到一个错误:

>>> open(1, 'w').close()
>>> open(1, 'w').close()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 9] Bad file descriptor

有人可以解释这里发生了什么吗?我怀疑这与open可以将字节对象作为file参数的事实有关,但是为什么仅在我第二次输入无效file参数时才记录错误?

有趣的是:True也表现出相同的行为(不是False),就像一些整数一样。其他的,比如2,让我跑open(2, 'w').close()几次。其他的,比如 100,立即给出错误。

编辑:如评论中所述,原因似乎是整数被解释为文件描述符

标签: pythonio

解决方案


推荐阅读