python - 调用函数时更改 Python 3 sys.argv

标签 python python-3.x argv sys

我有一个程序main.py使用sys.argv从其他模块运行函数:

例如:
python main.py gui应该运行 maingui.py 中发挥作用
python main.py server start应该运行 mainserver.py 中发挥作用.

但如果程序只是运行server.main()在这个例子中,sys.argv['main.py', 'server', 'start']什么时候应该是[something, 'start'] .

server.py还依赖于正确的 argv,我需要确保 server.py 中使用的 argv与 main.py 收到的 argv 不同.如何更改这些值?

最佳答案

sys.argv 可以直接替换为:

saved_argv = sys.argv
try:
    sys.argv = ['./server.py', 'start']
    server.main()
finally:
    sys.argv = saved_argv

也就是说,您想要这样做(在单元测试之外,这种模式实际上很常见)表明您可能想要为您的模块构建更好的 API。

例如,当 server.py 作为独立模块运行时,它可能有一个 main 函数,但也有另一个函数,如 run_server() 可以使用自己的参数而不是依赖 sys.argv

关于python - 调用函数时更改 Python 3 sys.argv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49955228/

相关文章:

python - 如何从数据框中按行删除空单元格

python - Django 登录不工作

mysql - 为什么从 python 调用 MySQL 会报告 SQL 错误?

Python 无法从文件创建变量

c# - 我们如何在 C# 中获取 argv[0]?

c - main() 上没有参数的段错误

python - Python 中的正则表达式反向引用问题

python - 使用 matplotlib ArtistAnimation 将文本添加到动画图像

python - 规范化 Unicode

c - 无法在 c 中使用 exec 和 makeargv 运行 ./program