2017-08-29 115 views
1

我写了一个简单的python脚本来散列文件并输出结果。但是,当我运行脚本(python scriptname.py)时,我没有得到任何输出(期望它打印校验和)。我也没有从控制台得到任何错误。Python脚本,没有输出?

我在做什么错?

#!/usr/bin/env python 

import hashlib 
import sys 

def sha256_checksum(filename, block_size=65536): 

    sha256 = hashlib.sha256() 
    filename = '/Desktop/testfile.txt' 

    with open(filename, 'rb') as f: 
     for block in iter(lambda: f.read(block_size), b''): 
      sha256.update(block) 
    return sha256.hexdigest() 

def main(): 
    for f in sys.argv[1:]: 
     checksum = sha256_checksum(f) 
     print(f + '\t' + checksum) 

if __name__ == '__main__': 
    main() 
+0

你期待什么其他的输出?什么不工作? – Carcigenicate

+0

我希望文件的校验和/散列可以用行打印:print(f +'\ t'+ checksum) – arcade16

+0

哎呀,对不起,读“希望它打印校验和”为“除了打印校验”。 'sys.argv [1:]'的价值是什么? – Carcigenicate

回答

3

DEF主(): 在sys.argv中F [1:]:

脚本预期参数。如果你运行它没有任何争论,你没有看到任何输出。 主体假设你的散列但在散列函数提供的文件列表,你硬编码

名=“/Desktop/testfile.txt”

所以,如果你想通过文件散列作为脚本参数删除行

文件名= '/Desktop/testfile.txt'

和运行

python scriptname.py '/Desktop/testfile.txt' 
+0

这工作,谢谢。也没有引用文件的完整路径。 – arcade16