我的代码:
def getVersion(DownloadFile,rel,dll):
q = "(Get-Item " + DownloadFile +").VersionInfo | Format-List | findstr ProductVersion"
proc = subprocess.Popen(["powershell.exe", q], stdout=subprocess.PIPE)
start = ': '
end = '\''
result = re.search('%s(.*)%s' % (start, end), str(proc.stdout.read().rstrip())).group(1)
return (result)
代码是运行powershell命令并获取输出进行比较。详细地说,是使用PowerShell查找dll版本。但是对于某些dll文件,powershell不会返回任何版本(给出空白输出),然后我的python代码出现恐慌并报错了。
我面临的错误是:
result = re.search('%s(.*)%s' % (start, end), str(proc.stdout.read().rstrip())).group(1)
AttributeError: 'NoneType' object has no attribute 'group'
我正在寻找解决此问题的方法。
答案 0 :(得分:0)
将匹配搜索与.group(1)调用分开,然后仅在存在匹配项时才调用.group(1):
def getVersion(DownloadFile,rel,dll):
q = "(Get-Item " + DownloadFile +").VersionInfo | Format-List | findstr ProductVersion"
proc = subprocess.Popen(["powershell.exe", q], stdout=subprocess.PIPE)
start = ': '
end = '\''
match = re.search('%s(.*)%s' % (start, end), str(proc.stdout.read().rstrip()))
return match.group(1) if match else None