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