【问题标题】:Python script, no output?Python脚本,没有输出?
【发布时间】:2017-08-29 02:19:28
【问题描述】:

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

我做错了什么?

#!/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()

【问题讨论】:

  • 您还期待什么其他输出?究竟是什么不工作?
  • 我希望文件的校验和/哈希按以下行打印:print(f + '\t' + checksum)
  • 哎呀,对不起,将“期望它打印校验和”读作“除了它打印校验和”。 sys.argv[1:] 的值是多少?

标签: python file-io hash output


【解决方案1】:

定义主(): 对于 f in sys.argv[1:]:

脚本预期的参数。如果您在没有任何参数的情况下运行它,您将看不到任何输出。 主体假设您提供了用于散列的文件列表,但在散列函数中您硬编码

filename = '/Desktop/testfile.txt'

因此,如果您想将文件作为脚本参数传递以进行哈希处理删除该行

filename = '/Desktop/testfile.txt'

然后运行

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

【讨论】:

  • 这行得通,谢谢。也没有引用文件的完整路径。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 2017-08-17
相关资源
最近更新 更多