当前位置 : 主页 > 网络推广 > seo >

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

来源:互联网 收集:自由互联 发布时间:2021-06-16
灵感来自于 another question here,我想以便携式方式检索Python解释器的完整命令行.也就是说,我想获得解释器的原始argv,而不是sys.argv,它排除了解释器本身的选项(如-m,-O等). sys.flags 告诉我们设
灵感来自于 another question here,我想以便携式方式检索Python解释器的完整命令行.也就是说,我想获得解释器的原始argv,而不是sys.argv,它排除了解释器本身的选项(如-m,-O等).

sys.flags告诉我们设置了哪些布尔选项,但是它并没有告诉我们关于-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'
网友评论