簡體   English   中英

python在bash和子進程上運行時的不同輸出

[英]python different output when run on bash and subprocess

我正在運行一個腳本,該腳本在內部調用 bash 命令並相應地解析輸出。 例如我正在調用這個命令

result = subprocess.check_output("rg result",shell=True)
print(output)

我得到這個輸出沒有任何行號或任何東西

historyChecker.py:        result = subprocess.check_output("rg --help",shell=True)
historyChecker.py:        output = re.search(r'USAGE:',result)

如果我在 bash 中運行相同的命令,我會得到不同的結果

[~/history_checker/code]$ rg result                                                                                                                                               
historyChecker.py
56:        result = subprocess.check_output("rg --help",shell=True)
57:        output = re.search(r'USAGE:',result) 

知道為什么會發生這種情況以及我們如何解決這個問題。 謝謝

rg的文檔中:

-n , --line-number
顯示行號(從 1 開始)。 在終端中搜索時默認啟用此功能。

因此,當您在終端中運行它時,會啟用此選項。 當您使用subprocess.check_output() ,標准輸出連接到管道,並且未啟用此選項。

如果需要,請添加--line-number選項。

result = subprocess.check_output(["rg", "--line-number", "result"])
print(output)

你也沒有做任何需要 shell 解析的事情,所以將命令行作為列表傳遞,不要使用shell=True

暫無
暫無

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

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