Она состоит из 5 файлов, 4 из которых являются пользовательскими. модули, а 1 — main_.
У меня есть две функции в разных модулях, но единственная разница в этих функциях — одна переменная. См. ниже:
Из sha256.py
Код: Выделить всё
def get_hash_sha256():
global sha256_hash
filename = input("Enter the file name: ")
sha256_hash = hashlib.sha256()
with open(filename, "rb") as f:
for byte_block in iter(lambda: f.read(4096),b""):
sha256_hash.update(byte_block)
# print("sha256 valule: \n" + Color.GREEN + sha256_hash.hexdigest())
print(Color.DARKCYAN + "sha256 value has been calculated")
color_reset()
Код: Выделить всё
def get_hash_sha512():
global sha512_hash
filename = input("Enter the file name: ")
sha512_hash = hashlib.sha512()
with open(filename, "rb") as f:
for byte_block in iter(lambda: f.read(4096),b""):
sha512_hash.update(byte_block)
# print("sha512 valule: \n" + Color.GREEN + sha512_hash.hexdigest())
print(Color.DARKCYAN + "sha512 value has been calculated")
color_reset()
Код: Выделить всё
def which_hash():
sha256_or_sha512 = input("Which hash do you want to calculate: sha256 or sha512? \n")
if sha256_or_sha512 == "sha256":
get_hash_sha256()
verify_checksum_sha256()
elif sha256_or_sha512 == "sha512":
get_hash_sha512()
verify_checksum_sha512()
else:
print("Type either sha256 or sha512. If you type anything else the program will close...like this.")
sys.exit()
if __name__ == "__main__":
which_hash()
Приложение работает, но я знаю, что могу сделать это менее избыточным, но я не знаю как.
Как я могу определить функции get_hash_sha---() иverify_checksum_sha---() один раз, и они будут выполнять соответствующие вычисления на основе выбирает ли пользователь sha256 или sha512?
Пожалуйста, дайте мне знать, если я что-то неясно, и заранее спасибо.
Я выполнил несколько вариантов кодирую эту программу.
Я создал ее как один файл, а также создал различные модули и вызывал функции из этих модулей.
В любом случае У меня были повторения, но я знаю, что это противоречит цели автоматизации.
Может быть, потому что уже поздно и моя концентрация почти иссякла, но я даже не знаю, с чего начать .
Подробнее здесь: https://stackoverflow.com/questions/790 ... event-repe