Recuperar los argumentos de la línea de comandos del intérprete de Python
command-line command-line-arguments (1)
Puedes usar 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''
Inspirado por otra pregunta aquí , me gustaría recuperar la línea de comandos completa del intérprete de Python de manera portátil. Es decir, quiero obtener el argv
original del intérprete, no el sys.argv
que excluye las opciones del intérprete en sí (como -m
, -O
, etc.).
sys.flags
nos dice qué opciones booleanas se configuraron, pero no nos dice acerca de los argumentos -m
, y el conjunto de indicadores cambiará con el tiempo, creando una carga de mantenimiento.
En Linux, puede usar procfs para recuperar la línea de comando original, pero esto no es portátil (y es algo asqueroso):
open(''/proc/{}/cmdline''.format(os.getpid())).read().split(''/0'')