Сценарий Python, нет вывода?

Я написал простой скрипт на 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()

1 ответ

Решение

def main(): для f в sys.argv[1:]:

В сценарии ожидаются аргументы. Если вы запустите его без каких-либо аргументов, вы не увидите никакого вывода. Основная часть предполагает, что вы предоставляете список файлов для хеширования, но в функции хеширования вы жестко запрограммированы

filename = '/Desktop/testfile.txt'

Итак, если вы хотите передать файлы для хеширования в качестве аргументов скрипта, удалите строку

filename = '/Desktop/testfile.txt'

и беги

python scriptname.py '/Desktop/testfile.txt'
Другие вопросы по тегам