Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么open(True,';w';)像sys.stdout.write一样打印文本?_Python_Python 3.x - Fatal编程技术网

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现在明白了,谢谢:)