【发布时间】:2014-03-18 19:03:16
【问题描述】:
我正在尝试编写一个小程序来获取某些文件的校验和。使用提到的代码over here,我做了这个:
import hashlib
import sys
from functools import partial
def md5sum(filename):
with open(filename, mode='rb') as f:
d = hashlib.md5()
for buf in iter(partial(f.read, 128), b''):
d.update(buf)
return d.hexdigest()
print(md5sum(sys.argv[0]))
该代码运行良好。但是,当我尝试像这样添加 SHA1 支持时:
import hashlib
import sys
from functools import partial
def md5sum(filename):
with open(filename, mode='rb') as f:
d = hashlib.md5()
for buf in iter(partial(f.read, 128), b''):
d.update(buf)
return d.hexdigest()
def sha1sum(filename):
with open(filename, mode='rb') as f:
d = hashlib.sha1()
for buf in iter(partial(f.read, 128), b''):
d.update(buf)
return d.hexdigest()
if sys.argv[0] == 'md5':
print(md5sum(sys.argv[1]))
elif sys.argv[0] == 'sha1':
print(sha1sum(sys.argv[1]))
它停止打印输出(对于 MD5 和 SHA1)。我在这里做错了什么?
【问题讨论】:
-
尝试将
print(sys.argv[0])放在最后的if测试之前;您可能没有得到您认为的系统参数(或者您应该改用sys.argv[1])。 -
我一直更喜欢使用
optparse作为命令行参数,这只是我的看法。这样您就不必为所有索引而烦恼。
标签: python python-3.x md5 sha1 checksum