Podczas korzystania z argparse przekazanie --help
do programu generuje tekst pomocy. Niestety, jest trudny do odczytania, ponieważ między opcjami nie ma pustych linii. Oto fragment, aby zilustrować:Python argparse: Wstaw pusty wiersz między pozycjami pomocy
optional arguments:
-h, --help show this help message and exit
-u FILENAME, --up-sound FILENAME
The sound to play when the network comes up. Default:
"/path/to/some/sound/file.wav"
-d FILENAME, --down-sound FILENAME
The sound to play when the network goes down. Default:
"/path/to/some/other/sound/file.wav"
-p EXECUTABLE, --player EXECUTABLE
The program to use to play sounds. Default: "play"
-s, --silent If specified, network_monitor.py will not play any
sounds.
-c, --no-clear-screen
If specified, screen will not be cleared (nor extra
blank lines added) before network_monitor.py runs.
--version show program's version number and exit
Zauważ, że w niektórych przypadkach, takich jak między -p
i -s
lub między -c
i --version
, trudno jest powiedzieć na pierwszy rzut oka, która pomaga tekst dotyczy która opcja. Pomiędzy wpisami powinien znajdować się pusty wiersz. Na przykład:
-p EXECUTABLE, --player EXECUTABLE
The program to use to play sounds. Default: "play"
-s, --silent If specified, network_monitor.py will not play any
sounds.
Jak mogę to zrobić? Severalother pytania zalecane przy użyciu argparse.RawTextHelpFormatter
. Problem polega na tym, że jeśli go używam, muszę napisać własną logikę, aby zawinąć tekst pomocy, ponieważ formant pomocy w formacie tekstowym nie formatuje. Oczywistą odpowiedzią byłoby dołączenie '\n\n'
na końcu tekstu pomocy i użycie domyślnego formatyzatora. Ale w niewytłumaczalny sposób nowe znaki zostają usunięte.
Jaka jest przyszłość? Używam Pythona 3.4.
Właśnie tego szukałem. Dzięki. Jak sądzisz, jakie są szanse na to zerwanie w przyszłości? –
The [plik źródłowy] (https://hg.python.org/cpython/log/default/Lib/argparse.py) nie był tak często dotykany w przeszłości, a większość z tych zmian nie miała wpływu na interfejs. Mimo ostrzeżenia powiedziałbym, że jesteś całkiem niezły od dłuższego czasu. Dodatkowo, po prostu wywołując metodę bazową, moje rozwiązanie nie zależy od dużej ilości i nie wymyśla ponownie żadnej logiki, która może przerwać w przyszłości. – poke