Warning
This page is located in archive. Go to the latest version of this course pages.

Zpracování argumentů na příkazové řádce: modul ''argparse''

Hodně užitečných nástrojů pro uživatele počítačů má formu příkazů/skriptů spouštěných z příkazové řádky (ls, dir, grep, …). Tyto příkazy obvykle přijímají argumenty uvedené na příkazové řádce za příkazem (např. ls -la), které ovlivňují chování příkazu. Python obsahuje standardní modul argparse (tutorial), který umožňuje snadno konfigurovat možné parametry skriptu a následně je snadno zpracovat.

Využití v úloze klasifikace znaků

Skript, který máte vytvořit, se má chovat podle specifikací. To lze zajistit např. tak, že modul argparse nakonfigurujete následujícím způsobem:

import argparse
 
def setup_arg_parser():
    parser = argparse.ArgumentParser(description='Learn and classify image data.')
    parser.add_argument('train_path', type=str, help='path to the training data directory')
    parser.add_argument('test_path', type=str, help='path to the testing data directory')
    mutex_group = parser.add_mutually_exclusive_group(required=True)
    mutex_group.add_argument('-k', type=int, 
                             help='run k-NN classifier (if k is 0 the code may decide about proper K by itself')
    mutex_group.add_argument("-b", 
                             help="run Naive Bayes classifier", action="store_true")
    parser.add_argument("-o", metavar='filepath', 
                        default='classification.dsv',
                        help="path (including the filename) of the output .dsv file with the results")
    return parser

Když pak tuto funkci použijete takto:

    parser = setup_arg_parser()
    args = parser.parse_args()
    print(args.train_path)

proměnná args bude obsahovat všechny potřebné informace předané skriptu na příkazové řádce a můžete s nimi dál pracovat.

Kostra modulu ''classifier.py''

Výše uvedený kód najdete v souboru classifier.py, který můžete použít jako výchozí kostru vašeho řešení. Pokud tento modul spustíte jako

python3 classifier.py -k 3 ./train_data ./test_data 
měli byste vidět následující výstup:
Training data directory: ./train_data
Testing data directory: ./test_data
Output file: classification.dsv
Running k-NN classifier with k=3
tedy

  • adresáře s trénovacími a testovacími daty specifikované na příkazové řádce,
  • název výstupního souboru, který na příkazové řádce specifikován nebyl a argparse doplnil výchozí hodnotu, a
  • zvolený typ klasifikátoru (k-NN) s číselným argumentem. (Klasifikátor ale musíte implementovat sami. :-) )
courses/b3b33kui/cviceni/strojove_uceni/argparse.txt · Last modified: 2022/04/28 10:27 by peckama2