python command-line command-line-arguments argv

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'')