2014-10-13 4 views
0

В моем сценарии python я читаю один текстовый файл. Для этого файла, я даю путь в командную строку в UNIX следующим образом:Несколько аргументов командной строки в Python

python My_script.py --d /fruit/apple/data1.txt 

Я зачитаю еще один файл в одном сценарии. Поэтому я просто хотел узнать, как передать 2 аргумента, чтобы получить путь к 2 файлам. У меня есть следующий код, который отлично работает для одного аргумента.

parser=argparse.ArgumentParser() 
parser.add_argument('--d', '--directory', required=True, action='store', dest='directory', default=False, help="provide directory name") 
args=parser.parse_args() 
file_apple=args.directory 
A=open(file_apple) 
file1=A.read() 

так в моей командной строке UNIX я пишу следующий и скрипт запускается успешно

python My_script.py --d /fruit/apple/data1.txt 

Цель заключается в предоставлении второго аргумента следующим образом и хотите, чтобы прочитать этот файл, как и первый.

python My_script.py --d /fruit/apple/data1.txt --d /fruit/orange/data2.txt 

Поблагодарите вашу помощь в этом.

ответ

0

Вы можете использовать nargs.

parser=argparse.ArgumentParser() 
parser.add_argument('-d', '--directory', nargs='+' required=True, action='store', dest='directory', default=False, help="provide directory name") 
args=parser.parse_args() 
file_apple=args.directory 
print file_apple 
... 

Я дал nargs значение как +, что означает 1 или много аргументов для этой команды. Итак, вы должны указать хотя бы один аргумент пути к файлу.

Если вы уверены, что вы будете иметь только два или некоторое фиксированное число всегда, то вы можете указать, что также как nargs = 3

Теперь file_apple будет переменным, содержащим список путей, который вы передаёте.

$ python My_script.py -d /fruit/apple/data1.txt 
['/fruit/apple/data1.txt'] 

и:

$ python My_script.py -d /fruit/apple/data1.txt /fruit/orange/data2.txt 
['/fruit/apple/data1.txt', '/fruit/orange/data2.txt'] 

PS: обычно дефис используется для одиночных флагов символов и doubledash для нескольких символов. например -d или --directory

+0

Большое спасибо. Он работал, как ожидалось. И спасибо за эту информацию о -d и -d! – SAM

Смежные вопросы