Python中的多个命令行参数

时间:2014-10-13 23:04:27

标签: python-2.7 unix command-line-arguments

在我的python脚本中,我正在阅读一个文本文件。对于该文件,我在UNIX中给出了命令行的路径,如下所示:

   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

我将非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用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:传统上,单个短划线用于单个字符标志,双倍用于多个字符。例如-d--directory