灵感来自于 another question here,我想以便携式方式检索Python解释器的完整命令行.也就是说,我想获得解释器的原始argv,而不是sys.argv,它排除了解释器本身的选项(如-m,-O等). sys.flags 告诉我们设
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'