Сценарий 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'