Python 为什么open(True,';w';)像sys.stdout.write一样打印文本?
我有以下代码:Python 为什么open(True,';w';)像sys.stdout.write一样打印文本?,python,python-3.x,Python,Python 3.x,我有以下代码: with open(True, 'w') as f: f.write('Hello') 为什么此代码打印文本Hello,而不是引发错误?来自: open(文件,mode='r',buffering=-1… file是一个字符串或字节对象,提供要打开的文件的路径名(绝对或相对于当前工作目录),或者是要包装的文件的整数文件描述符 该“整型文件描述符”在下文中进一步描述: 例如,标准输入通常为文件描述符0,标准输出为1,标准错误为2。由进程打开的其他文件将被分配3、4、5,依
with open(True, 'w') as f:
f.write('Hello')
为什么此代码打印文本Hello
,而不是引发错误?来自:
open(文件,mode='r',buffering=-1…
file是一个字符串或字节对象,提供要打开的文件的路径名(绝对或相对于当前工作目录),或者是要包装的文件的整数文件描述符
该“整型文件描述符”在下文中进一步描述:
例如,标准输入通常为文件描述符0,标准输出为1,标准错误为2。由进程打开的其他文件将被分配3、4、5,依此类推
由于布尔值是
int
子类,False
可以与0
和True
互换使用1
。因此,打开True
的文件描述符与打开1
的文件描述符相同,这将选择标准输出。那么0
呢这是否意味着当你打开一个文件时,它将是3
,4
,5
,等等?正如第二个引号中所说,0
是标准输入,当打开更多的文件时,顺序整数将被分配。@KevinGuan,除非你打开了文件描述符,文件号为3,4或5这显然是行不通的。它只适用于0、1或2,因为它们是stdin、stdout和stderr,它们都是打开的文件描述符。@Padraiccanningham、TigerhawkT3现在明白了,谢谢:)