GNU getopt i narzędzia wiersza poleceń, które go używają, pozwalają na przeplatanie opcji i argumentów, znanych jako opcje permutacji (patrz http://www.gnu.org/software/libc/manual/html_node/Using-Getopt.html#Using-Getopt). Moduł Getopt :: Long firmy Perl również to obsługuje (z qw (: config gnu_getopt)). argparse wydaje się nie obsługiwać (lub nawet wspominać) opcji permutacji.Czy argumencie Pythona można permutować kolejność argumentów jak gnu getopt?
Istnieje wiele pytań dotyczących SO związanych z poleceniem arg/opt, ale żadna nie wydaje się odpowiedzieć na to pytanie: czy można argumentować, aby permutować kolejność argumentów, np. Getopt?
Sprawa stosowanie jest prototypowy linii poleceń podpis jak GNU sort:
sort [opts] [files]
w którym 1) Opcje i pliki są przesuwane, a 2) wykaz plik może zawierać zero lub więcej argumentów.
Na przykład:
import argparse
p = argparse.ArgumentParser();
p.add_argument('files',nargs='*',default=['-']);
p.add_argument('-z',action='store_true')
p.parse_args(['-z','bar','foo']) # ok
p.parse_args(['bar','foo','-z']) # ok
p.parse_args(['bar','-z','foo']) # not okay
usage: ipython [-h] [-z] [files [files ...]]
próbowałem:
- p.parse_known_args - nie narzekam, ale faktycznie nie permutacji albo i nie Balk o argumentach które wyglądają jak nieprawidłowe opcje (np. --bogus lub -b powyżej).
- p.add_argument ('Pliki', nargs = argparse.REMAINDER) - opcja -z jest zawarty w plikach chyba przed pozycyjnych args
- p.add_argument ('Files', nargs = '*', akcja =” dodać');
Chcę zaimplementować coś zbliżonego do prototypowego sortowania GNU powyżej. Nie jestem zainteresowany flagą, którą można określić dla każdego pliku (np. -f plik1 -f plik2).