Quando si utilizza optparse voglio ottenere l'intera stringa dopo un'opzione, ma ottengo solo una parte di esso fino al primo spazio.Python optparse e spazi in un argomento
es .:
python myprog.py --executable python someOtherProg.py
cosa ottengo in 'eseguibile' è solo 'python'.
È possibile analizzare tali righe utilizzando optparse o si deve utilizzare argparse per farlo?
€:. Ho già provato racchiudendolo in "s Ma dopo aver scavato ulteriormente nel codice che ho scoperto che l'invocazione sottoprocesso non può gestire l'argomento
La stringa con la riga di comando ottiene stipati in una. lista ''. args
args = [self.getExecutable()] + self.getArgs().split()
E 'come
"[python D:\\\workspace\\\myprog\\\src\\\myprog.py]"
Questo mi dà il sistema non riesce a trovare un'eccezione file. Quando uso
args[0]
funziona. Ma perdo gli argomenti dell'eseguibile.
Il modulo di sottoprocesso crea una cmdline da un elenco se non ottiene una stringa in primo luogo, quindi non posso spiegare questo comportamento al momento.
Preparati a essere stupito: sotto Python 3.5, uno spazio di escape viene escape da sys.argv! In C, abbiamo 'silly python some':' argv [1] '=' "python" ',' argv [2] '=' "some" '. 'silly" python some "': 'argv [1]' = '" python alcuni "'. E 'silly python \ some':' argv [1] '=' "python alcuni" '. Ma con Python 3.5 abbiamo 'silly.py python some':' argv [1] '=' "python" ',' argv [2] '=' "some" '. 'silly.py" python some "': 'argv [1]' = '" python alcuni "'. E 'silly.py python \ some':' argv [1] '=' "python \\" ',' "alcuni" '. Stupefacente! – Urhixidur