2016-07-26 2 views
0

実行ファイルを実行してその出力を解析し、QDLoader 9008と一致させてからCOMポート値を取得すると、スクリプトの出力はCOM75になります。 以下のスクリプトは、一致する文字列の行を表示しません。なぜですか?実行ファイルの出力を解析する

import os 
import re 
import subprocess 
''' 
C:\Dropbox\h_loader>lsusb.exe 
Communications Port (COM1) 
Intel(R) Active Management Technology - SOL (COM3) 
COMPANY HS-USB QDLoader 9008 (COM75) 
COMPANY HS-USB Diagnostics 9025 (COM64) 
COMPANY HS-USB NMEA 9025 (COM63) 
COMPANY HS-USB Diagnostics 9091 (COM81) 

''' 

cmd = 'lsusb.exe' 
proc = subprocess.Popen(cmd.split(' '), stdout=subprocess.PIPE, stderr=subprocess.PIPE) 

(output, error) = proc.communicate() 
QD_line = re.search('QDLoader 9008',output) 
print QD_line 


EXPECTED OUTPUT:- 
    COM75 
+0

私が正しく理解している場合:

match= re.search(r'QDLoader 9008 \((\w*)\)',output) 

してから撮影した文字列にアクセスします。

は、あなたが興味を持っている出力の一部をキャプチャするためにあなたのパターンを変更する必要があります出力は '<_sre.SRE_Match object at 0x02B16988>'のようなものでしょうか? –

+0

Rawing - thats correct –

答えて

2

re.searchは、文字列ではなくmatch objectを返します。 でもが文字列を返すと、おそらくCOM75を返すことができませんでした。regexはあなたの心を読むことができません。どのような出力を期待しているのですか?だから

print match.group(1) 
関連する問題