我想pythong使用subprocess模块在中运行命令,并将输出存储在变量中。但是,我不希望将命令的输出打印到终端。对于此代码:def storels(): a = subprocess.Popen("ls",shell=True)storels()我在终端中获得目录列表,而不是将其存储在中a。我也尝试过: def storels(): subprocess.Popen("ls > tmp",shell=True) a = open("./tmp") [Rest of Code] storels()这也将ls的输出打印到我的终端。我什至用某种过时的os.system方法尝试了该命令,因为ls > tmp在终端中运行根本不会打印ls到终端,而是将其存储在中tmp。但是,同样的事情也会发生。编辑:在遵循marcog的建议后,但仅在运行更复杂的命令时,才出现以下错误。cdrecord --help。Python将其吐出:Traceback (most recent call last): File "./install.py", line 52, in <module> burntrack2("hi") File "./install.py", line 46, in burntrack2 a = subprocess.Popen("cdrecord --help",stdout = subprocess.PIPE) File "/usr/lib/python2.6/subprocess.py", line 633, in __init__ errread, errwrite) File "/usr/lib/python2.6/subprocess.py", line 1139, in _execute_child raise child_exceptionOSError: [Errno 2] No such file or directory
3 回答
胡说叔叔
TA贡献1804条经验 获得超8个赞
如果您使用的是python 2.7或更高版本,执行此操作的最简单方法是使用subprocess.check_output()命令。这是一个例子:
output = subprocess.check_output('ls')
要也重定向stderr,可以使用以下命令:
output = subprocess.check_output('ls', stderr=subprocess.STDOUT)
如果要将参数传递给命令,则可以使用列表,也可以使用调用Shell并使用单个字符串。
output = subprocess.check_output(['ls', '-a'])
output = subprocess.check_output('ls -a', shell=True)
添加回答
举报
0/150
提交
取消