我需要从python脚本中读取shell命令输出并用每行填充一个列表:
ISSUE: 如果我将命令输出保存为变量,循环周期将逐个字符地读取它
#!/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
Run Code Online (Sandbox Code Playgroud)
输出不好: ['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
Run Code Online (Sandbox Code Playgroud)
好的输出 ['总计52 \n','drwxrwxr-x 3 ajn ajn 4096 mars 11 17:52.\n',...]
问题: 如何使用第二种方法的结果使用第一种方法(没有文件操作,在程序内部)?
我不是一个真正的蟒蛇人,但这应该适合你,看起来更清晰一些:
import subprocess
cmd = ["ls", "-la"]
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
for line in proc.stdout.readlines():
print line
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14379 次 |
| 最近记录: |