我想使用Windows的命令网络统计服务器并使用提取日期,格式为:(\ d + - \ d + - \ d + \ d +:\ d +:\ d +)
def sysCmd(string):
try:
res = subprocess.Popen(string)
return res
except:
return "NULL - Command Error"
loginTime = sysCmd ("net statistics server ") # windows command
loginRex = "(\d+-\d+-\d+ \d+:\d+:\d+)"
loginMatch = re.search(loginRex, str(loginTime))
print (loginMatch.group(0))
我收到错误: AttributeError:'NoneType'对象没有属性'group'
正则表达式似乎在这个windows命令给出的输出的正则表达式测试工具中运行得非常好。经过这么多的打击和试验后,它仍然没有失败。
我做错了什么?
P.S。我正在使用Python 3
答案 0 :(得分:0)
我是python 2.7的用户,所以我不知道那里的正则表达式是否存在差异,但我不知道“ - ”在其中的含义。对我来说,有效的是:
loginRex = "(\d?\d?\d+:\d+:\d+)"
这将与1981:05:17和81:05:17相匹配。如果不需要后者,只需删除“?”。你能试试吗?
干杯!
答案 1 :(得分:0)
我意识到问题实际上存在于我调用子进程的函数中。必须提供FLAGS。
res = subprocess.Popen(string)
return res
现在是
res = subprocess.Popen(string, shell=False, stdout=subprocess.PIPE)
return str(res.communicate())
该死的傻错! ;)