我正在運行一個 python 腳本檔案,它應該從另一個檔案夾運行一個帶有一些引數的 c 可執行檔案。
可執行檔案位于 root home ubuntu ie ( ~/camera_intrinsic_calibration) 檔案夾中
通常,我在該檔案夾位置的終端上運行如下:
./pngCamCalStep1 /home/nvi/Perception/09-22-22/data/60_left/d.png 12 8 0.05
我的 c 可執行檔案在哪里./pngcamcalstep1,其他是需要傳遞的引數。
因此,在腳本檔案中,我使用子行程嘗試了以下操作,但它們都不起作用:
result = subprocess.call(["./pngCamCalStep1", "home/nvi/Perception/sensor_0/left-d.png", "12" ,"8", "0.05"], check =True, capture_output=True, cwd='/home/nvi/camera_intrinsic_calibration/',shell =True)
或者
result = subprocess.run(shlex.split("./pngCamCalStep1 home/nvi/Perception/sensor_0/left-d.png 12 8 0.05"), check =True, capture_output=True, cwd='/home/nvi/camera_intrinsic_calibration/', shell =True)
它不起作用,我得到的輸出為:
Traceback (most recent call last):
File "/home/nvi/catkin_ws/src/camera_calibration/src/camera_calibration/camera_calibrator.py", line 340, in on_mouse
self.c.do_calibration()
File "/home/nvi/catkin_ws/src/camera_calibration/src/camera_calibration/calibrator.py", line 1280, in do_calibration
result = subprocess.call(["./pngCamCalStep1", "home/nvi/Perception/sensor_0/left-d.png", "12" ,"8", "0.05"], check =True, capture_output=True, cwd='/home/nvi/camera_intrinsic_calibration/',shell =True)
File "/usr/lib/python3.8/subprocess.py", line 340, in call
with Popen(*popenargs, **kwargs) as p:
TypeError: __init__() got an unexpected keyword argument 'check'
誰能讓我知道如何解決這個問題?
從另一個檔案夾呼叫或運行 C 可執行檔案并提供輸入引數的正確命令是什么?
uj5u.com熱心網友回復:
您的語法大部分是正確的。
錯誤訊息很清楚:使用 subprocess.Popen 類作為后端的 subprocess.call() 不接受關鍵字引數“檢查”
洗掉該引數并重試。
如果您希望在被呼叫行程回傳非零回傳碼時引發 CalledProcessError,請改用 subprocess.check_call()。
uj5u.com熱心網友回復:
好吧,我將整個論點放在一個單引號中,然后它起作用了,洗掉、檢查和 captire_output:
subprocess.call(["./pngCamCalStep1 home/nvi/Perception/sensor_0/left-d.png 12 8 0.05"], cwd='/home/nvi/camera_intrinsic_calibration/',shell =True)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/515320.html
