0

我想使用 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' object has no attribute 'group'

对于此 windows 命令给出的输出,正则表达式似乎在正则表达式测试工具中运行良好。经过这么多的反复试验,它仍然没有失败。

我究竟做错了什么?

ps 我正在使用 Python 3

4

2 回答 2

0

我是 python 2.7 的用户,所以我不知道那里的正则表达式是否可能存在差异,但我不知道其中的“-”是什么意思。对我来说,有效的是:

loginRex = "(\d?\d?\d+:\d+:\d+)"

这将匹配 1981:05:17 和 81:05:17 两者。如果后者不是必需的,只需删除“?”。你能试试这个吗?

干杯!

于 2013-07-22T13:46:37.580 回答
0

我意识到问题实际上存在于我调用子进程的函数中。它必须与 FLAGS 一起提供。

res = subprocess.Popen(string)
return res

就是现在

res = subprocess.Popen(string, shell=False, stdout=subprocess.PIPE)
return str(res.communicate())

该死的愚蠢错误!;)

于 2013-07-22T13:47:09.330 回答