Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 解析可执行文件的输出_Python - Fatal编程技术网

Python 解析可执行文件的输出

Python 解析可执行文件的输出,python,Python,我试图运行一个可执行文件并解析其输出,将该行与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

我试图运行一个可执行文件并解析其输出,将该行与
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

re.search
返回一个字符串,而不是一个字符串。即使它确实返回了一个字符串,它也不可能返回
COM75
-正则表达式无法读懂您的心思,它怎么知道您期望的输出

您需要更改模式以捕获您感兴趣的输出部分:

match= re.search(r'QDLoader 9008 \((\w*)\)',output)
然后访问捕获的字符串:

print match.group(1)

re.search
返回一个字符串,而不是一个字符串。即使它确实返回了一个字符串,它也不可能返回
COM75
-正则表达式无法读懂您的心思,它怎么知道您期望的输出

您需要更改模式以捕获您感兴趣的输出部分:

match= re.search(r'QDLoader 9008 \((\w*)\)',output)
然后访问捕获的字符串:

print match.group(1)

如果我理解正确,输出类似于绘图-这是正确的如果我理解正确,输出类似于绘图-这是正确的