Drużyna łańcuch znaków SafeSort
argparse analizuje pięć podinstrukcji SafeSort i przypisuje każdej osobnej funkcji obsługi.
SafeSort będzie sterowany pięcioma podkomendami: scan,
plan, apply,
duplicates oraz undo. Do analizy
Moduł odpowiedzi na argumenty wiersza poleceń argparse z
standardowej biblioteki — to on generuje tekst --help.
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(
prog="safesort",
description=(
"SafeSort: a safe, non-destructive file organizer. "
"scan/plan/duplicates are read-only; 'apply' sorts and 'undo' restores files."
),
)
subparsers = parser.add_subparsers(dest="command", required=True)
scan_parser = subparsers.add_parser("scan", help="...")
scan_parser.add_argument("root", type=Path, help="Directory to scan.")
# ... Podobnie dla plan, apply, duplicates, undo
return parser
dest="command" umieszcza nazwę wywołanego podpokarmu w args.command. required=True wymusza argparse samodzielne wygenerowanie wyraźnego błędu, jeśli użytkownik uruchomi safesort bez żadnego podpolecenia nie musisz pisać tego czeku ręcznie.Od rozdzielonych argumentów do wyniku
Każda podinstrukcja odpowiada jednej funkcji obsługi, a słownik wiąże nazwę Polecenia o pożądanej funkcji:
_HANDLERS = {
"scan": cmd_scan,
"plan": cmd_plan,
"apply": cmd_apply,
"duplicates": cmd_duplicates,
"undo": cmd_undo,
}
def main(argv: list[str] | None = None) -> int:
parser = build_parser()
args = parser.parse_args(argv)
handler = _HANDLERS[args.command]
return handler(args)
Taki słownik — ten sam trik co w grze „Kamień, papier, nożyczki” z załącznika do tej części: zamiast łańcucha if args.command == "scan": ... elif ...
potrzebną funkcję po prostu wyszukuje się po kluczu.
Każda funkcja obsługi zwraca liczbę całkowitą: 0 at
niezerowa wartość błędu to kod zwrotny programu, który
widzi system operacyjny i każdy skrypt, który wywołuje safesort
z innego miejsca.
Zainstaluj pakiet i uruchom polecenie — argparse generuje tekst pomocy sam, bez pojedynczego wiersza napisanego ręcznie:
Krótko
- argparse.ArgumentParser add_subparsers() analizuje pięć podkomend SafeSort i sam tworzy tekst — help.
- dest=„command”
- Każdy handler zwraca 0 przy sukcesie i wartość różną od zera przy błędzie — to jest kod zwrotny całego programu.