簡體   English   中英

使用ini文件參數從python運行Windows命令行程序

[英]running windows command line program from python with ini file argument

我試圖從帶有ini配置文件的python腳本中運行python腳本運行Windows命令行應用程序,我懷疑該命令執行時沒有通過。

該命令是c:\\ BLScan \\ blscan.exe test.ini。

ini文件是應用程序需要知道要使用哪些參數進行掃描的配置文件。

這是我正在使用的腳本

import subprocess
from subprocess import Popen, PIPE

cmd = '/blscan/blscan test.ini'

p = Popen(cmd , stdout=PIPE, stderr=PIPE)
out, err = p.communicate()
print "Return code: ", p.returncode
print out.rstrip(), err.rstrip()

當我使用subprocess.popen調用應用程序時,它看起來並沒有讀取ini文件。 設備行指示尚未從ini文件中識別出調諧器,因此程序將移至默認調諧器。

Return code:  0
BLScan ver.1.1.0.1091-commited
Config name: .\test.ini
Device 0: TBS 6925 DVBS/S2 Tuner
Device number: Total Scan Time = 0.000s
Transponders not found ! 
>>> 

這是從dos外殼運行時的外觀。

C:\BLScan>blscan test.ini
BLScan ver.1.1.0.1091-commited
Config name: .\test.ini
Scan interval 0
From 3400 to 3430 Mhz, Step 5 Mhz, Horizontal, Minimal SR 1000 KS, Maximal SR 10
0000 KS
3400 Mhz ...
3405 Mhz ...
3410 Mhz ...

任何意見,將不勝感激

從DOS shell運行此命令時,當前工作目錄為C:\\BLscan ,這在顯示的提示中很明顯:

C:\BLScan>blscan test.ini

您還可以從錯誤輸出中看出,它肯定在當前的工作目錄中。 (例如,某些Windows程序將嘗試與可執行文件相同的目錄…,但您不能指望該目錄,而這個目錄則不能。)

Config name: .\test.ini

因此,如果您當前的目錄不是C:\\BLScan ,那么從DOS shell也將無法使用它。 嘗試這個:

C:\BLScan>cd \
C:\>\BLScan\blscan test.ini

您將得到與在Python中完全相同的錯誤。

如果您不能依靠C:\\ BLScan,則必須通過絕對路徑。 例如,這將再次起作用:

C:\>\BLScan\blscan \BLScan\test.ini

Python與此處的shell沒什么不同。 如果您給它一個相對路徑,例如test.ini ,它將使用當前的工作目錄。 因此,您有兩個相同的選擇:

os.chdir('/blscan')
p = subprocess.popen('blscan test.ini')

… 要么:

p = subprocess.popen(r'\BLScan\blscan \BLScan\test.ini')

嘗試將參數作為數組傳遞給subprocess.call:subprocess.call([“ / blscan / blscan.exe”,“ test.ini”])

另外,根據您的問題中的命令行與py輸出,即使您的“工作目錄”不同,也請仔細檢查blscan.exe工具是否可以正常工作。 也許您需要與blscan.exe所在的目錄相同。

os.chdir(“ C:\\ BLScan”)

您最有可能需要將路徑傳遞給ini以及exe:

clst = [r'C:\blscan\blscan.exe', r'C:\blscan\test.ini']
p = Popen(clst, stdout=PIPE, stderr=PIPE)
# etc . . .

如果您通過Popen列表,它將為您正確引用args。

暫無
暫無

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

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