簡體   English   中英

為什么“subprocess”中的“DEVNULL”和“PIPE”打印為“-3”和“-1”?

[英]why 'DEVNULL' and 'PIPE' from 'subprocess' were printed as '-3' and '-1'?

stdout 和 stderr 的兩個值“DEVNULL”和“PIPE”在我將它們放入 dic 時分別打印為“-3”和“-1”。 如何解決這個問題,除了通過添加''符號將它們轉換為字符串,因為它們之后將作為 arguments 合並到一個 subprocess.run function 中。

from subprocess import DEVNULL, PIPE

F1 = DEVNULL
F2 = PIPE
L1 = {'stdout':F1, 'stderr':F2}

print(L1)

output

{'stdout': -3, 'stderr': -1}

一切都很好,如果您查看subprocess源代碼,您會發現

Constants
---------
DEVNULL: Special value that indicates that os.devnull should be used
PIPE:    Special value that indicates a pipe should be created
STDOUT:  Special value that indicates that stderr should go to stdout

PIPE = -1
STDOUT = -2
DEVNULL = -3

例子:

import subprocess
subprocess.run(['echo', '123'], stdout=subprocess.DEVNULL)

相當於

import subprocess
subprocess.run(['echo', '123'], stdout=-3)

但 1st 對於閱讀此類代碼的人來說不那么神秘

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM