Gen*_*her 3 python sys argv python-3.x
我有一个程序main.py用于sys.argv运行其他模块的函数:
例如:
python main.py gui应该运行main中的函数gui.py
python main.py server start应该运行main中的函数server.py。
但如果程序只是server.main()在这个例子中运行,sys.argv那就是['main.py', 'server', 'start']它应该的时候[something, 'start']。
由于server.py也依赖于正确的 argv,因此我需要确保 中使用的 argvserver.py与 收到的 argv 不同main.py。我怎样才能改变这些值?
sys.argv可以直接替换:
saved_argv = sys.argv
try:
sys.argv = ['./server.py', 'start']
server.main()
finally:
sys.argv = saved_argv
Run Code Online (Sandbox Code Playgroud)
也就是说,您想要执行此操作(在单元测试之外,这种模式实际上很常见)这一事实表明您可能希望为您的模块构建更好的 API。
例如,也许server.py可以有一个main函数作为独立模块运行,但也可以有另一个类似的函数run_server()可以采用自己的参数而不是依赖于sys.argv.