如何在可执行Python脚本与另一Python脚本间共享参数/变量?
脚本间参数传递方案:从test.py传参到main.py
你需要实现的是让test.py接收命令行参数,再传递给通过os.system调用的main.py,以下是可行的修改方案:
方案一:命令行参数直接传递
修改test.py
已经通过argparse拿到了参数args.test,只需在调用main.py时把参数拼接到命令行中:
import os, argparse parser = argparse.ArgumentParser() parser.add_argument("-t", "--test", action="store", help="Store argument as variable") args = parser.parse_args() # 将参数作为命令行参数传递给main.py os.system(f"python main.py {args.test}")
修改main.py
通过sys.argv接收命令行参数(或者用argparse做更规范的解析):
import sys # 检查是否有传入参数 if len(sys.argv) > 1: print(sys.argv[1])
如果想用更规范的argparse解析:
import argparse parser = argparse.ArgumentParser() parser.add_argument("test_val", help="接收来自test.py的参数") args = parser.parse_args() print(args.test_val)
方案二:通过环境变量传递
修改test.py
把参数存入环境变量,main.py读取该环境变量:
import os, argparse parser = argparse.ArgumentParser() parser.add_argument("-t", "--test", action="store", help="Store argument as variable") args = parser.parse_args() # 设置环境变量 os.environ["TEST_PARAM"] = args.test os.system("python main.py")
修改main.py
读取环境变量并打印:
import os test_param = os.getenv("TEST_PARAM") if test_param: print(test_param)
原代码问题说明
你原来在main.py中使用from __main__ import *是无效的,因为test.py和main.py是两个独立的Python进程,它们的内存空间完全隔离,无法直接共享变量,必须通过进程间通信方式(比如命令行参数、环境变量)传递数据。
内容的提问来源于stack exchange,提问作者ricehound
相关产品推荐
相关产品推荐

