Python md5sum和脚本的问题

Python md5sum和脚本的问题,python,bash,Python,Bash,我的问题是:我无法在脚本中生成和存储我的目录的md5sum 这是我的纸条 #!/usr/bin/python md5= `md5sum /etc/shadow` 发生的事情很简单,“md5sum/etc/shadow”存储在我的变量md5中,不生成defirm 有人可以告诉我我做错了什么您不能像在Perl中那样运行Bash脚本,您需要使用,它将运行命令并返回程序的输出。您需要通过以下方式获得此输出: 就记录而言,backtick符号是repr的别名,但在Python3中被弃用并删除。它与ba

我的问题是:我无法在脚本中生成和存储我的目录的md5sum

这是我的纸条

#!/usr/bin/python 
md5= `md5sum /etc/shadow`
发生的事情很简单,“md5sum/etc/shadow”存储在我的变量md5中,不生成defirm


有人可以告诉我我做错了什么

您不能像在Perl中那样运行Bash脚本,您需要使用,它将运行命令并返回程序的输出。您需要通过以下方式获得此输出:

就记录而言,backtick符号是
repr
的别名,但在Python3中被弃用并删除。它与bash命令无关:

>>> `id`
'<built-in function id>'
>>> repr(id)
'<built-in function id>'
>>`id`
''
>>>报告员(id)
''

除了已经提供的答案(使用子流程),您还可以自己计算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'

这不是在python中运行bash命令的方式。
>>> 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'