16
another question here에서 영감을 얻어 파이썬 인터프리터의 전체 명령 줄을 이식 가능한 방식으로 검색하고 싶습니다. 즉, 원래 argv
의 통역사를 얻고 싶습니다. sys.argv
은 통역사에게 옵션을 제외합니다 (예 : -m
, -O
등).파이썬 인터프리터의 명령 줄 인수를 가져옵니다.
sys.flags
은 어떤 부울 옵션이 설정되었는지 알려주지 만 -m
개의 인수에 대해 알려주지 않으며 시간 경과에 따라 플래그 집합이 바뀌어 유지 관리 부담이 발생합니다.
open('/proc/{}/cmdline'.format(os.getpid())).read().split('\0')
을 사용할 수 있습니다 : 당신이 원래의 명령 행을 검색 할 procfs의를 사용할 수 있지만,이 이식 할 수 없습니다 (그리고 종류의 총의) 리눅스
위대한 질문 ... 내가 알 수있는 한, 이것은 불가능합니다 (CPython에서). [Py_Main] (https://hg.python.org/cpython/file/2bb5fa752bfc/Modules/main.c#l236)이 명령 줄 인수를 얻기 위해 구문 분석을 한 다음 [PySys_SetArgv] (https : //hg.python.org/cpython/file/2bb5fa752bfc/Modules/main.c#l571)을 나머지 인수와 함께 사용하고'* argc' 및'** argv'를 사용하지 않습니다. 아마도 [Py_GetArgcArgv] (https://hg.python.org/cpython/file/2bb5fa752bfc/Modules/main.c#l691)가있을 수 있습니다.하지만 문서화 된 곳 어디에도 보이지 않습니다. C-API ... – mgilson
'.split ('\ 0')'.replace ('\ 0', '')'보다 정확합니다. 그렇지 않으면 공백을 포함하는 인수와 별도의 인수를 구별 할 수 없습니다. – tripleee