【发布时间】:2017-09-25 23:44:00
【问题描述】:
调用 python 程序的命令行如下所示:
$ python [python_options] myprogram.py [args]
我知道我可以访问 args (sys.argv),但是如何访问 python_options?
我不经常使用 python_options,但有时它很有用,例如-u(无缓冲输出)或 -3(检查 python3 不兼容性)。
确切地说,我想创建一个子进程,它是另一个 python 程序,我想将相同的 python_options 传递给它。 (我知道 sys.flags,但这不是我想要的。我不想要标志的值;我想要设置这些标志的命令行中使用的实际字符串)。
【问题讨论】:
-
也许挖掘
multiprocessing的代码会有所帮助?我假设它将标志传递给它的工作进程。 -
我开始认为这不能直接完成,而是我需要这样做:
$ python [python_options] myprogram.py [python_options2] [args],并将python_options2传递给我的子进程。显然我需要确保 myprogram.py 不会混淆args和 python 选项,但我认为我可以做到。 -
如果您编写另一个脚本接受
python_options作为参数并将myprogram.py视为特殊子进程可能会更好。在那种情况下,永远不需要python_options2。希望对你有帮助:) -
您可以使用 ctypes 获取原始命令行参数并将所有内容保持在
[-c cmd | -m mod | file | -]。 -
@eryksun 我该怎么做? (我查看了 ctypes 页面,但看不到任何帮助)。