现在我有个测试文件.dat运行hextump并将输出放入十六进制转储.dat文件。在
subprocess.Popen(['hexdump file.dat > hexdump.dat' ], shell=True)
作为旁注,我看到了不使用shell=True
的建议,但实际上我得到了错误OSError: [Errno 2] No such file or directory
。在
所以,我希望能够传入一个变量或数组,文件,而不是硬编码的“文件.dat". "“文件”可以是用户输入或从上一个子进程部分生成的数组/列表。在
我尝试过用户输入案例:
^{pr2}$还有:
p = subprocess.Popen(['hexdump', inputs, ' > hexdump.dat' ], stdout=PIPE, stderr=STDOUT)
谢谢你的帮助,我知道我不太了解这里需要的结构,所以一些“随手”的回答将不胜感激。在
比如:
您应该仔细阅读^{} 和
shell
参数的作用,然后做出决定。在您需要
shell=True
,否则它将查找具有该名称的可执行文件。shell=True
告诉方法使用shell来执行命令,使>
和朋友成为您最初想要的(重定向)。在您发布的以下代码:
将不起作用,因为您只是将
files
传递给hexdump
,如果名为files
的文件不存在,您将得到一个错误(如果它确实存在,它可能仍然不是您想要的)您需要构建正在执行的字符串:
^{pr2}$您可以使用stdout参数重定向,而不是使用
>
重定向。至于文件列表,您只需将文件列表附加到包含hexdump的数组中,即相关问题 更多 >
编程相关推荐