Komut satırı argümanlarını geri alın another question here'dan ilham alarak, Python yorumlayıcısının tam komut satırını taşınabilir bir şekilde almak istiyorum. Yani, tercümanın kendisinin (-m
, -O
, vb. Gibi) seçeneklerini hariç tutan sys.argv
'u değil, orijinal argv
yorumunu almak istiyorum.Python yorumlayıcısı
sys.flags
, hangi boole seçeneklerinin ayarlandığını bize söyler, ancak bize -m
argümanlarını anlatmaz ve bayrak kümesi zamanla değişmek zorunda kalır ve bakım yükü oluşturur.
open('/proc/{}/cmdline'.format(os.getpid())).read().split('\0')
kullanabilirsiniz: özgün komut satırını almak için procfs kullanabilirsiniz, ancak bu taşınabilir değil (ve bir çeşit iğrenç) Linux'ta
Harika bir soru ... Anlayabildiğim kadarıyla bu mümkün değil (CPython'da). Bana [Py_Main] (https://hg.python.org/cpython/file/2bb5fa752bfc/Modules/main.c#l236) komut satırı argümanlarını almak için ayrıştırıyor gibi görünüyor, sonra [PySys_SetArgv] (https: //hg.python.org/cpython/file/2bb5fa752bfc/Modules/main.c#l571) kalan argümanlar ile ve '* argc' ve' ** argv' ile başka hiçbir şey yapmaz. Muhtemelen bağlayabileceğimiz [Py_GetArgcArgv] (https://hg.python.org/cpython/file/2bb5fa752bfc/Modules/main.c#l691) var, ama belgelenmiş bir yerde göremiyorum. C-API ... – mgilson
'.split ('\ 0')', .replace ('\ 0', '') 'yerine daha doğru olur - aksi takdirde boşluk ve bağımsız değişkenler içeren argümanlar arasında ayrım yapamazsınız. – tripleee