You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:28:08