【发布时间】:2021-12-26 14:50:15
【问题描述】:
我想用re.findall 在我的字符串中搜索一个词。代码如下:
def check_status():
p1 = subprocess.run(["screen", "-ls"], shell=False)
p2 = re.findall("myscreen", p1)
print(p2)
p1 的返回如下所示:
There are screens on:
2420454.myscreen (12/25/2021 01:15:17 PM) (Detached)
6066.bot (12/14/2021 07:11:52 PM) (Detached)
如果我执行此函数,我会收到以下错误消息:
File "/usr/lib/python3.10/re.py", line 240, in findall
return _compile(pattern, flags).findall(string)
TypeError: expected string or bytes-like object
我已经搜索过这个问题,但一无所获。
我正在使用 Python 3.10
【问题讨论】:
-
因为它需要一个字符串,你可以通过
str(p1)将p1转换为一个字符串 -
如果我执行
str(p1),该函数会返回一个空数组,如下所示:[] -
您可能需要在
subprocess.run上设置capture_output=True,然后查看p1.stdout或使用其他subprocess方法之一从命令中获取数据。
标签: python subprocess python-re gnu-screen findall