我需要从Python脚本中读取shell命令的输出,并将每行填入列表中:
问题: 如果我将命令输出保存为变量,循环周期会逐个字符地读取它。
问题: 如果我将命令输出保存为变量,循环周期会逐个字符地读取它。
#!/usr/bin/python
import subprocess
CMD = "ls -la"
output = subprocess.check_output(CMD, shell=True)
list = []
for line in output:
list.append(line)
print list
错误输出: ['t', 'o', 't', 'a', 'l', ' ', '5',...]
解决方法: 作为一种解决方法,我将命令输出重定向到文件中,然后逐行读取:
#!/usr/bin/python
import subprocess
CMD = "ls -la > tmp"
subprocess.call(CMD, shell=True)
list = []
f = open("tmp", "r")
for line in f:
list.append(line)
print list
良好的输出 ['总共52个\n','drwxrwxr-x 3 ajn ajn 4096 mars 11 17:52 .\n',...]
问题: 如何将第二种方法的结果与第一种方法(无文件操作,全部在程序内部)结合使用?
line.decode('UTF-8')
将字节序列转换为字符串。 - Abdul Munim