Она состоит из 5 файлов, 4 — пользовательских модулей и 1 — основного. .
У меня есть две функции в разных модулях, но единственная разница в этих функциях — одна переменная. См. ниже:
Из 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