0
在Python中,我知道標準輸出流可用作內置sys模塊中的標準輸出文件對象,但我很困惑:首先,我無法找到sys模塊我使用任何其他模塊(modulename.__file__
); secondond,我不知道如何找到標準輸出文件對象。如何找到Python stdout文件對象的位置?
在Python中,我知道標準輸出流可用作內置sys模塊中的標準輸出文件對象,但我很困惑:首先,我無法找到sys模塊我使用任何其他模塊(modulename.__file__
); secondond,我不知道如何找到標準輸出文件對象。如何找到Python stdout文件對象的位置?
stdout
在sys
模塊中定義。假設您正在使用C實現,請下載源代碼(3.6)並查看Python/sysmodule.c
。然而,stdout
本身是從PyId_stdout
這是在Python/pylifecycle.c
在功能initstdio
定義分配:
/* Set sys.stdout */
fd = fileno(stdout);
std = create_stdio(iomod, fd, 1, "<stdout>", encoding, errors);
if (std == NULL)
goto error;
PySys_SetObject("__stdout__", std);
_PySys_SetObjectId(&PyId_stdout, std);
Py_DECREF(std);
正如你所看到的,它是從stdio
C運行時庫的。此外,__stdout__
是同時創建的,如果您重新分配它,這意味着要回收stdout
。
同一源文件中的函數create_stdio
還包含更多細節,如緩衝,換行符和編碼。
built-in => no'__file__'屬性。 「無法找到stdout對象」是什麼意思?你需要哪些信息? –
@ Jean-FrançoisFabre「無法」意味着我不知道如何找到它。我想看看它。 – marco
'sys.stdout'就是這樣。你還需要什麼? –