1

我正在尝试从 python 文件(2.7)运行命令:

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

但是我收到一个错误,文件“>>”不存在。我试过:

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

但仍然>>是一个问题。

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

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

谢谢。

4

2 回答 2

4

您可以将子进程的标准输入和标准输出的值传递给 Popen,如下所示:

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

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

于 2013-10-21T08:50:03.793 回答
3

我认为您应该使用shell=True参数Popen

如果 shell 为 True,指定的命令将通过 shell 执行。如果您将 Python 主要用于它在大多数系统 shell 上提供的增强控制流,并且仍然希望方便地访问其他 shell 功能,例如 shell 管道、文件名通配符、环境变量扩展和 ~ 到用户家的扩展,这将很有用目录。

subprocess.Popen("sha256sum file1.zip >> file2.sha", shell=True)
于 2013-10-21T08:43:11.940 回答