我正在使用subprocess
來執行名爲trace.py的Python腳本,它位於不同的文件夾中。腳本trace.py然後使用子進程運行traceroute命令,然後打印輸出。當我去到trace.py位於並在終端輸入這個文件夾:Python腳本從終端執行,但不是在使用子進程時執行?
python trace.py
或
./trace.py
或從任何位置:
python /home/.../cgi-bin/trace.py
它工作正常並將traceroute打印到終端。但是,當我嘗試使用subprocess
從main.py執行trace.py時,它似乎不起作用。我已經通過創建test.py並使用subprocess從main.py執行它並測試了這個方法。我這樣做有以下情況:
output = subprocess.check_output([sys.executable, script_path])
哪裏script_path
是trace.py
絕對路徑。
完整的錯誤我得到的是這樣的(路徑縮短):
Traceback (most recent call last):
File "/home/.../cgi-bin/trace.py", line 11, in <module>
traceroute = subprocess.check_output(["traceroute", "www.google.com"])
File "/usr/lib/python2.7/subprocess.py", line 566, in check_output
process = Popen(stdout=PIPE, *popenargs, **kwargs)
File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Traceback (most recent call last):
File "main.py", line 97, in <module>
serve(args.port, public_html, cgibin)
File "main.py", line 55, in serve
process = subprocess.check_output(["/usr/bin/python", script_path])
File "/usr/lib/python2.7/subprocess.py", line 573, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['/usr/bin/python', '/home/.../cgi-bin/trace.py']' returned non-zero exit status 1
爲什麼這個不行的,但是從終端執行它呢?
可以輸出'python trace.py --ip www.google.com; echo $?' – jepio
退出狀態是'1'。終端不感興趣。試試'echo $?'看看它是'1'。 –
@PeterWood退出狀態爲0. – Esoemah