我有一個Python腳本,我寫的是從命令行調用的。我正在編寫一個GUI包裝,但不想更改主要功能。在GUI代碼中,我使用subprocess.run(['./executable.py', input])
調用腳本,但輸入在executable.py
的sys.argv
列表中不可見。如何通過輸入以便sys.argv
可見?如何將輸入傳遞到另一個Python腳本的`sys.argv`列表中?
下面是測試腳本我已經保存爲test.py
(使其可執行chmod +x test.py
):
#!/usr/bin/env python
# script to test using sys.argv with subprocess
import sys
print(sys.argv)
以下是我得到的命令行調用這個時候:
$> ./test.py input.txt
['./test.py', 'input.txt']
這裏當我在python shell中調用這個函數時會得到:
>>> import subprocess
>>> output = subprocess.run(['./test.py', 'input.txt'], shell=True, stdout=subprocess.PIPE)
>>> >>> print(output.stdout)
b"['./test.py']\n"
我如何獲得input.txt
以顯示在sys.argv
?
除非你完全知道你需要,否則你不應該使用'shell = True'。 –