簡體   English   中英

使用subprocess.call時,有什么方法可以獲取執行的完整命令行?

[英]Is there any way to get the full command line that's executed when using subprocess.call?

我正在使用subprocess.call,您在其中給它一個數組的argumets,它將構建命令行並執行它。

首先是否涉及任何轉義? (例如,如果我將包含空格的文件的路徑作為參數傳遞,則/path/my file.txt會被轉義嗎? "/path/my file.txt"

並且有什么方法可以使該命令行在執行之前生成(轉義后和所有后)?

因為我需要檢查生成的命令行是否不超過一定數量的字符(以確保執行時不會出現錯誤)。

如果您不使用shell=True ,那么實際上並沒有涉及“命令行”。 subprocess.Popen只是將您的參數列表傳遞給基礎的execve()系統調用。

同樣,也沒有轉義,因為不涉及任何外殼程序,因此沒有任何解釋特殊字符的內容,也沒有任何嘗試標記化您的字符串的東西。

不必擔心字符限制,因為參數永遠不會串聯到單個命令行中。 參數的最大數量和/或單個參數的長度可能受到限制。

如果使用 shell=True ,你必須構建在命令行自己把它傳遞給前subprocess

暫無
暫無

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

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