如何编写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]]
。您必须在命令行中的括号周围至少添加引号或双引号。然后,您将能够检索表示必须使用转换的列表的字符串