如何仅在encrypt_file()未返回None时调用decrypt_file()?
如何仅在encrypt_file()返回非None值时调用decrypt_file()?
看起来你已经搭好了代码的基础框架,其实要实现仅当encrypt_file()返回非None时执行解密操作,根本不需要复杂的异常处理——直接对函数返回值做判断就可以,这是最直接贴合你需求的方案。
修改后的核心代码
import sys # 注意:Windows路径里的反斜杠要转义,或者用原始字符串前缀r''避免转义问题 sys.path.append(r'C:\Users\gabri\Desktop\CS\Assignment 7') from assgn7 import encrypt_file, decrypt_file file_in = 'Sample.txt' print('Encrypting input file', file_in) enc_dict = encrypt_file(file_in) # 关键判断:只有加密成功(返回非None)才执行解密 if enc_dict is not None: print('-' * 20) print('Decrypting input file', file_in) decrypt_file(enc_dict, file_in + '.enc') else: print("加密操作失败,将跳过解密步骤")
逻辑说明
你已经设定了encrypt_file()在失败时返回None,成功时返回加密字典enc_dict,那我们只需要通过if enc_dict is not None来确认加密流程成功完成,再触发后续的解密操作。如果加密失败(返回None),就跳过解密,还可以加个提示信息让你清楚当前的执行状态。
补充:如果encrypt_file会抛出异常怎么办?
要是你的encrypt_file()函数在遇到错误(比如找不到目标文件、没有读写权限)时,不是返回None而是直接抛出异常,那你才需要引入异常处理。常见的文件操作异常包括:
FileNotFoundError:输入文件不存在PermissionError:没有文件读写权限IOError:其他输入输出类错误
这种情况下,可以把加密代码包裹在try-except块里,同时保留返回值判断:
import sys sys.path.append(r'C:\Users\gabri\Desktop\CS\Assignment 7') from assgn7 import encrypt_file, decrypt_file file_in = 'Sample.txt' enc_dict = None try: print('Encrypting input file', file_in) enc_dict = encrypt_file(file_in) except FileNotFoundError: print(f"错误:无法找到文件 {file_in}") except PermissionError: print(f"错误:没有权限访问文件 {file_in}") except Exception as e: print(f"加密过程中发生未知错误:{str(e)}") # 依然通过返回值判断是否执行解密 if enc_dict is not None: print('-' * 20) print('Decrypting input file', file_in) decrypt_file(enc_dict, file_in + '.enc')
内容的提问来源于stack exchange,提问作者Gabe
相关产品推荐
相关产品推荐

