Python中如何根据用户输入调用外部脚本(encrypt/decrypt)?
解决方案
首先修正原代码里的一个小问题:input()返回的是字符串类型,判断时要和字符串"1"比较,而非数字1。
以下提供两种可行的实现方式:
方式一:用subprocess执行独立脚本
适合encrypt.py和decrypt.py本身是可单独运行的脚本(自身包含if __name__ == "__main__"执行入口)。
修改后的main.py代码:
import subprocess import sys PATH = r"/path/to/scripts/" def encryption(): script_path = PATH + "encrypt.py" # 调用当前Python解释器执行目标脚本 subprocess.run([sys.executable, script_path]) def decryption(): script_path = PATH + "decrypt.py" subprocess.run([sys.executable, script_path]) if __name__ == "__main__": encrypt_or_decrypt = input("Do you want to [1] encrypt or [2] decrypt? ") if encrypt_or_decrypt == "1": encryption() else: decryption()
方式二:导入脚本模块调用函数
如果encrypt.py和decrypt.py是作为功能模块设计的(内部定义了专门的执行函数),直接导入调用更高效,也便于代码复用。
假设encrypt.py结构如下:
# encrypt.py def run_encryption(): # 加密核心逻辑 print("执行加密操作") if __name__ == "__main__": run_encryption()
decrypt.py结构类似:
# decrypt.py def run_decryption(): # 解密核心逻辑 print("执行解密操作") if __name__ == "__main__": run_decryption()
对应的main.py代码:
import sys PATH = r"/path/to/scripts/" # 将脚本路径添加到Python模块搜索路径 sys.path.append(PATH) import encrypt import decrypt def encryption(): encrypt.run_encryption() def decryption(): decrypt.run_decryption() if __name__ == "__main__": encrypt_or_decrypt = input("Do you want to [1] encrypt or [2] decrypt? ") if encrypt_or_decrypt == "1": encryption() else: decryption()
内容的提问来源于stack exchange,提问作者Pork Lord
相关产品推荐
相关产品推荐

