Python中如何在exec中存储值并沿用脚本传参旧方式
解决方法
你现有代码里的exec(open('script.py ', filename).read())存在错误:open()的第二个参数是文件打开模式(比如'r'),你把文件名传进去会导致参数错误,无法正常运行。下面给你两种可行的解决方式:
方式一:修改原脚本(推荐)
把script.py的核心逻辑封装成函数,同时保留命令行运行的能力,这样既可以沿用原来的script.py filename.xlsx方式启动,也能作为模块导入调用:
修改后的script.py代码:
import sys def process_excel(filename): # 这里放置你原脚本中读取、处理Excel的所有逻辑 print(f"正在处理文件:{filename}") if __name__ == '__main__': # 处理命令行运行时的参数 if len(sys.argv) != 2: print("使用方式:python script.py filename.xlsx") sys.exit(1) process_excel(sys.argv[1])
在你的调用脚本中,直接导入并调用函数即可:
filename = input("Input XLSX file: ") import script script.process_excel(filename)
方式二:不修改原脚本(临时方案)
如果不想改动原脚本,可以临时修改sys.argv来模拟命令行传参(原脚本大概率依赖sys.argv获取文件名):
import sys filename = input("Input XLSX file: ") # 保存原有命令行参数,避免影响其他逻辑 original_argv = sys.argv.copy() # 模拟命令行传参格式 sys.argv = ['script.py', filename] # 导入脚本,此时原脚本会读取sys.argv[1]作为文件名执行 import script # 恢复原有命令行参数 sys.argv = original_argv
内容的提问来源于stack exchange,提问作者Jian Ruiz Mangampo
相关产品推荐
相关产品推荐

