我正在编写一个Python脚本,它枚举了计算机上运行的所有进程。我当前的代码执行此操作,但在一个难以阅读的大块文本中打印出来。如何改进我的脚本以将输出文本放在每个进程和所有进程的垂直列表中?
import subprocess
print(subprocess.check_output('set',shell=True)
答案 0 :(得分:0)
set
is an internal command在您的案例中显示cmd.exe
个环境变量。
要在Python中获取环境变量,请改用os.environ
。
如果要将set
命令的输出作为字符串列表(未测试):
#!/usr/bin/env python3
import os
from subprocess import check_output
lines = check_output('cmd.exe /U /c set').decode('utf-16').split(os.linesep)
答案 1 :(得分:-1)
set
应该已经使用换行符进行打印,因此如果他们没有显示,那么某些内容比您告诉我们的更加错误。如果要将设置拆分,例如:
import subprocess
print(subprocess.check_output('set',shell=True).replace('\n', '\n\n'))
如果问题是你在Python 3上运行并且bytes
对象是一个大blob,你可以让subprocess
将它解码为一个友好的可打印字符串给你:
print(subprocess.check_output('set',shell=True, universal_newlines=True))
# Yes, the name of the keyword is dumb; it sounds like it handles different
# line ending conventions, but on Python 3, it also decodes from `bytes`
# to `str` for you.
对于线条包装的一般情况(尽管它对于仅仅#34;太大而且#34;的文本段落没有任何作用),你可能想要查看textwrap
module;它会将一段文本分成一个list
行,这些行很好地包裹在单词边界处,因此您不会将单词划分为多行。
答案 2 :(得分:-1)
免责声明:我之前没有做过你做过的事,但这可能有用。
import subprocess
processes = subprocess.check_output('set',shell=True)
processes = processes.decode('UTF-8').split('\n') # convert bytes to unicodes and split
for process in processes:
print(process)