如何在字典中保存Linux命令的输出?

时间:2019-09-05 10:38:20

标签: python

我正在尝试获取所有文件的列表,并在键值对中设置了修改时间。

我试图通过使用subprocess.check_output(“ ls -lh | grep -v'^ d'| awk'{print $ 9,$ 8}'”,shell = True)存储输出,但由于它正在返回我无法将其转换为字典。

text = subprocess.check_output("ls -lh | grep -v '^d' | awk '{print $9,$8}'", shell=True)

2 个答案:

答案 0 :(得分:1)

首先在输出上调用.decode(),以便使用字符串。然后,您将不得不做一些stripsplit魔术来构造字典:

import subprocess

output = subprocess.check_output("ls -lh | grep -v '^d' | awk '{print $9,$8}'", shell=True).decode()

d = {}
for line in output.split('\n'):
    line = line.strip()
    if line:
        file_name, mod_time = line.split()
        d[file_name] = mod_time 

print(d)

答案 1 :(得分:0)

使用.decode()方法将字节转换为字符串。如:

text = subprocess.check_output("ls -lh | grep -v '^d' | awk '{print $9,$8}'", shell=True).decode('utf-8')

我想您会在这里处理其余的事情吗?