【发布时间】:2016-02-27 09:50:33
【问题描述】:
我正在尝试检查系统中安装的软件的 md5sum。我将首先解释环境,然后再解释问题。有一个目录/home/software。在此目录中有多个文件夹,如 software1、software2 等。在每个文件夹中都有一个文件夹(比如文件夹 1),其中包含一个 check*.md5 文件(check123.md5)。它是我试图读取的这个文件的内容。
例如:
>>cd /home/software/software1
>>md5sum -c folder1/check*.md5
当我在 linux 命令行中尝试上述两个命令时,我得到了输出。 我正在尝试用 python 编写脚本。所以最初我使用 os.system 并再次工作。但是现在我的要求是我必须使用子流程。但它不再起作用了。
我的代码甚至可以在 python 命令行中模拟。
import subprocess, os
os.chdir(/home/software/software1)
var = "md5sum -c folder1/check*.md5"
vars = shlex.split(var)
p1 = subprocess.Popen(vars, stdout = open ("/tmp/test.txt", "a"))
输出如下:md5sum: folder1/check*.md5: No such file or directory.
现在我意识到只有当我不在正确的目录中时才会出现此错误。但是 os.cwd() 表明我在正确的目录中。
有谁知道问题出在哪里?
【问题讨论】:
-
为什么不用python自带的md5方法呢?这在这里描述:stackoverflow.com/questions/16874598/…
-
stackoverflow.com/a/21565932/5087125 似乎更好,其中有人实际上将 hashlib 与在子进程中运行 md5sum 进行基准测试。这似乎不值得,而且内置方式更便于启动。
标签: python subprocess md5sum