11
我有以下代码:为什么open(True,'w')打印像sys.stdout.write这样的文本?
with open(True, 'w') as f:
f.write('Hello')
为什么这个代码打印文本Hello
,而不是抛出一个错误?
我有以下代码:为什么open(True,'w')打印像sys.stdout.write这样的文本?
with open(True, 'w') as f:
f.write('Hello')
为什么这个代码打印文本Hello
,而不是抛出一个错误?
从built-in function documentation on open()
:
open(file, mode='r', buffering=-1...
文件是字符串或字节对象,提供路径名要打开的文件或一个整数文件描述符(绝对或相对于当前工作目录)的文件被包裹
即“整数文件描述符”进一步在os
module documentation描述:
例如,标准输入通常是文件描述符0,标准输出是1,标准错误是2.然后将为进程打开的其他文件分配3,4,5等等。
由于布尔是一个int
子类,False
可以互换使用0
和True
与1
使用。因此,打开文件描述符True
与打开文件描述符1
相同,该文件描述符将选择标准输出。
那么'0'呢? :) –
这是否意味着当你打开一个文件时,它将是'3','4','5'等等。 –
正如在第二个引用块中所说的那样,“0”是标准输入,并且随着更多文件打开,顺序整数将被分配。 – TigerhawkT3