我在Windows中使用Python。我试图杀死一个正在运行的windows进程,如果它已经在运行,但我得到下面的错误:
TypeError:需要一个bytes-like object,而不是'str'
我导入以下模块:
import os
import subprocess
from time import sleep
然后在我的代码下面:
s = subprocess.check_output('tasklist', shell=True)
if "myProcess.exe" in s:
print('myProcess.exe is currently running. Killing...')
os.system("taskkill /f /im myProcess.exe")
sleep(0.5)
当尝试比较进程myProcess.exe是否在列表s中时,错误仅在条件中发生。
默认情况下,subprocess.check_output
返回bytes
对象。当您检查bytes
中字符串的成员时,您看到的错误发生。
例如:
'foo' in b'bar'
结果:
TypeError: a bytes-like object is required, not 'str'
你可以用两种不同的方式来解决这个问题,通过将text=True
传递给subprocess.check_output
或简单地使用bytes
对象来检查成员资格。
s = subprocess.check_output('tasklist', shell=True, text=True)
或:
if b"myProcess.exe" in s:
# do something