python - 检索 Python 解释器的命令行参数

标签 python command-line command-line-arguments argv

灵感来自 another question here ,我想以可移植的方式检索 Python 解释器的完整命令行。也就是说,我想获得解释器的原始 argv ,而不是排除解释器本身选项的 sys.argv (如 -m-O 等)。

sys.flags告诉我们设置了哪些 bool 选项,但它没有告诉我们关于 -m 参数的信息,并且标志集必然会随着时间而改变,从而造成维护负担。

在 Linux 上,您可以使用 procfs 检索原始命令行,但这不是可移植的(而且有点粗糙):

open('/proc/{}/cmdline'.format(os.getpid())).read().split('\0')

最佳答案

你可以使用 ctypes

~$ python2 -B -R -u
Python 2.7.9 (default, Dec 11 2014, 04:42:00) 
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Persistent session history and tab completion are enabled.
>>> import ctypes
>>> argv = ctypes.POINTER(ctypes.c_char_p)()
>>> argc = ctypes.c_int()
>>> ctypes.pythonapi.Py_GetArgcArgv(ctypes.byref(argc), ctypes.byref(argv))
1227013240
>>> argc.value
4
>>> argv[0]
'python2'
>>> argv[1]
'-B'
>>> argv[2]
'-R'
>>> argv[3]
'-u'

关于python - 检索 Python 解释器的命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28336431/

相关文章:

windows - 如何使用批处理文件从 COM 端口读取数据?

command-line - 在 Windows 上,“subl”不是内部或外部命令,也不是可运行的程序或批处理文件

python - 将自己的参数传递给 ryu 代理应用程序

c - 仅使用系统调用编写 LS 命令,而不使用任何 C 的库调用

python - 在 Python 3.2 上清除 telnetlib 中的输出缓冲区

javascript - 如何在页面更新时执行jquery

python - 计算时间复杂度为 O(nlogn) 的列表中的出现次数

python - 如何防止我的 FOR 循环过早结束?

visual-studio-code - 如何使用 ripgrep 和 fzf 模糊查找包含特定文本的所有文件并打开它 VSCode

powershell - 使用 Powershell 中的 Stack,如何传递包含空格的测试参数?