Dee*_*Dee 1 python linux subprocess list python-3.x
我试图通过subprocess命令将一些ID提取到列表中。下面是我的代码:
list1=[]
list2=[]
list1 = subprocess.Popen("pgrep -u root",stdout=subprocess.PIPE, shell = True)
for i in list1:
file1 = open(os.path.join('/proc',i,'status')).readlines()
for line in file1:
if line.startswith("Mem: "):
id = int(line.split()[5])
if line.startswith("Cpu: "):
toC = int(line.split()[8])
list2 = (id,toC)
for k in list2:
self.text.insert(INSERT,k[0])
self.text.insert(INSERT,k[1])
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:'Popen'对象不可迭代。我正在创建一个列表,并将ID提取到列表中,然后对于列表中的每个ID,我都试图获取mem和cpu信息。该信息再次输入到另一个空列表(list2)。我正在遍历list2以显示这些信息。我要去哪里错了?
如果需要调用的结果,则需要与子流程对象进行通信
proc = subprocess.Popen(['pgrep', '-u', 'root'], stdout=subprocess.PIPE)
text = proc.communicate()[0].decode('utf-8')
for i in text.splitlines():
...
Run Code Online (Sandbox Code Playgroud)
该Popen对象不是流程的输出,它是代表正在运行的子流程的对象。
还应避免,shell=True如果您可以这样做,因为它被广泛认为是安全问题,并且在这里不需要它。
| 归档时间: |
|
| 查看次数: |
4444 次 |
| 最近记录: |