最佳答案
我想使用子进程模块在 pythong
中运行一个命令,并将输出存储在一个变量中。但是,我不希望命令的输出被打印到终端。
对于这个代码:
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_exception
OSError: [Errno 2] No such file or directory