0

コマンドのini構成ファイルを使用して、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 ...

アドバイスをいただければ幸いです

4

3 に答える 3

0

引数を配列として subprocess.call に渡してみてください: subprocess.call(["/blscan/blscan.exe","test.ini"])

また、質問のコマンドラインとpyの出力に基づいて、「作業ディレクトリ」が異なる場合でもblscan.exeツールが機能することを再確認してください。場合によっては、blscan.exe が置かれているのと同じ作業ディレクトリにいる必要があるかもしれません。

os.chdir("C:\BLScan")

于 2013-05-03T23:04:40.640 に答える
0

ほとんどの場合、パスを ini と exe に渡す必要があります。

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

Popen にリストを渡すと、引数が正しく引用されます。

于 2013-05-03T23:08:17.100 に答える