为什么open(True,'w')打印像sys.stdout.write这样的文本?

时间:2015-09-29 09:59:39

标签: python python-3.x

我有以下代码:

with open(True, 'w') as f:
    f.write('Hello')

为什么此代码会打印文本Hello而不是引发错误?

1 个答案:

答案 0 :(得分:10)

来自built-in function documentation on open()

  

open(file, mode='r', buffering=-1...    file 是一个字符串或字节对象,给出要打开的文件的路径名(绝对或相对于当前工作目录)或要包装的文件的整数文件描述符

"整数文件描述符"在os module documentation

中进一步描述
  

例如,标准输入通常是文件描述符0,标准输出是1,标准错误是2.进程打开的其他文件将被分配3,4,5等等。

由于布尔值是int子类,False可与0True 1互换使用。因此,打开True的文件描述符与打开1的文件描述符相同,后者将选择标准输出。