Как вызвать функцию из командной строки, передавая именованные необязательные параметры - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть файл Python (2.7) с функцией. Я хочу вызвать его из командной строки и передать необязательные параметры по имени параметра.

В моем py-файле у меня есть эта функция:

def split_file(source_file_path, alt_output_path='', chunk_size=2000000): 

и внизу у меня есть это:

if __name__ == '__main__':    
    split_file(*sys.argv[1:])

Как настроить его так, чтобы он мог так называться?

> C:\Python27\python C:\Work\file_splitter.py "C:\Work\files\myfile.txt" alt_output_path="C:\EBI\Work\files\alt"

Я посмотрел на argparser, и это немного смущает меня.

1 Ответ

0 голосов
/ 24 апреля 2018

Это должно сработать:

to_split_args = [a.split("=") for a in sys.argv[1:]]
args = [a[0] for a in to_split_args if len(a) == 1]
kwargs = dict(a for a in to_split_args if len(a) == 2)
split_file(*args,**kwargs)

Но вы действительно должны взглянуть на argparser

...