another question here的启发下,我希望以可移植的方式检索Python解释器的完整命令行。也就是说,我想得到解释器的原始argv,而不是排除解释器本身选项的sys.argv(如-m-O等)。
sys.flags告诉我们设置了哪些布尔值选项,但它没有告诉我们关于参数的信息,标志集将随着时间的推移而改变,从而造成维护负担。
在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/

10-13 09:14