我的问题是:我无法在脚本中生成和存储目录的md5sum
这是我的纸条
#!/usr/bin/python
md5= `md5sum /etc/shadow`所发生的事情很简单,"md5sum /etc/影子“存储在我的变量md5上,而不是生成de stored
有人可以告诉我我做错了什么
发布于 2014-05-30 06:24:17
您不能像在Perl中那样运行Bash脚本,您需要使用 module,它将运行命令并返回程序的输出。您需要通过communicate()获得这个输出
import subprocess
p = subprocess.Popen("md5sum /etc/shadow", stdout=subprocess.PIPE)
md5 = p.communicate()[0]
print md5作为记录,回勾表示法是repr的别名,但在Python3中被取消推荐和删除。
>>> `id`
'<built-in function id>'
>>> repr(id)
'<built-in function id>'发布于 2014-05-30 06:31:06
除了已经提供的答案(使用子流程)之外,您还可以自己计算md5之和:
> md5sum sean.bin
167f3284b5de3bc7dfafaa98b068a65e sean.bin
>>> import hashlib
>>> md5 = hashlib.md5()
>>> md5.update(open("sean.bin").read())
>>> md5.hexdigest()
'167f3284b5de3bc7dfafaa98b068a65e'下面是我如何使用子流程来完成这一任务:
>>> import subprocess
>>> cmd = "md5sum sean.bin"
>>> proc = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> out, err = proc.communicate()
>>> out.split(" ")[0]
'167f3284b5de3bc7dfafaa98b068a65e'https://stackoverflow.com/questions/23948249
复制相似问题