如何编写python脚本以在命令提示符下传递项目列表?

如何编写python脚本以在命令提示符下传递项目列表?,python,python-2.7,Python,Python 2.7,例如: 我正在以以下格式在命令提示符中将项列表作为参数传递: $test run -list1 ["one day", "one hour"] -list2 ["1234"] 成功通过后,list1和list2输出应为: list1: type: list output format: ["one day", "one hour"] list2: type: list output formate: ["1234"] 您可以使用该模块

例如: 我正在以以下格式在命令提示符中将项列表作为参数传递:

  $test run -list1 ["one day", "one hour"] -list2 ["1234"]
成功通过后,list1和list2输出应为:

 list1: 
      type: list
      output format: ["one day", "one hour"]
 list2:
      type: list
      output formate: ["1234"]
您可以使用该模块。不过,语法会有点不同

在脚本中,您可以按以下方式使用
argparse
模块:

#!/usr/bin/python
import argparse

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='My awesome script doing stuff')
    parser.add_argument('--list1', metavar='V1', default=[], nargs='+', help='a string for the first list')
    parser.add_argument('--list2', metavar='V2', default=[], nargs='+', help='a string for the second list')

    arguments = parser.parse_args()
    print(arguments.list1)
    print(arguments.list2)
然后可以调用脚本:

$./run.py --list1 "one day" "one hour" --list2 "1234"

您可以使用
nargs='*'
而不是
nargs='+'
来允许空列表,例如
$./run.py--list1--list2“something”“something”“other”
而不是强制忽略参数名(如
$./run.py--list2“1234”

为什么不传递一个字符串并使用
string.split(','))
获取列表?命令行是否总是这样,有两个名为-list1和-list2的列表,或者列表的数量和名称是否会有所不同?是否可以按以下格式传递参数:$./run.py--list1[“一天”“一小时”]--list2[1234,5678,9087]您将无法轻松完成此操作。首先,在
sys.argv
中,此参数序列将被视为
['run.py'、'-list1'、'一天'、'一小时'、'-list2'、'1234'、'5678'、'9087]]
。您必须在命令行中的括号周围至少添加引号或双引号。然后,您将能够检索表示必须使用转换的列表的字符串