在我的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
我将非常感谢你的帮助。
答案 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