如何使用'>>'在popen子过程中

时间:2013-10-21 08:37:20

标签: python subprocess popen

我试图从python文件(2.7)运行命令:

p=subprocess.Popen("sha256sum file1.zip >> file2.sha")

但是我收到错误的文件'>>'不存在。 我试过了:

p=subprocess.Popen("sha256sum file1.zip >> file2.sha".split())

>>仍然存在问题。

当然,如果我在提示行中运行命令,则运行Ok并将输出放入文件file2.sha。

我知道我可以将stdout添加到Popen但是我很想知道是否有一种方法可以像从命令行运行一样简单地运行它。

感谢。

2 个答案:

答案 0 :(得分:4)

您可以将子进程的stdin和stdout的值传递给Popen,如下所示:

subprocess.Popen("sha256sum file1.zip", stdout = file("file2.sha", "a"))

请注意,该文件需要在附加模式下打开,以实现与>>相同的行为。

答案 1 :(得分:3)

我认为你应该shell=True argument使用Popen

  

如果shell为True,则将通过执行指定的命令   贝壳。如果您主要使用Python,这可能很有用   增强的控制流程,它提供了大多数系统外壳,仍然需要   方便地访问其他shell功能,如shell管道,   文件名通配符,环境变量扩展和扩展〜   到用户的主目录。

subprocess.Popen("sha256sum file1.zip >> file2.sha", shell=True)