在自定义代码中处理NoneType异常

时间:2019-02-28 13:28:51

标签: python error-handling nonetype

我的代码:

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'

我正在寻找解决此问题的方法。

1 个答案:

答案 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