2024-05-16 14:28:51 发布
网友
我有一个需要以文件名和一组key=value对命名的脚本。未定义key=value对集。它们依赖于传入的文件。
例如:
Script.py file1 bob=1 sue=2 ben=3 # file 1 needs bob, sue, and ben Script.py file2 mel=1 gorge=3 steve=3 # file 2 needs mel, gorge, and steve
对于argparse/optparse,这可能吗?还是我必须构建自己的解析器?
希望这有帮助,而不是传递dict,您可以传递一个“转义”json字符串作为命令行参数
import optparse import json parser = optparse.OptionParser() parser.add_option("-t", "--test", dest="test", action="store", type="string") options, _ = parser.parse_args() my_dict = json.loads(options.test) print my_dict['key1']
然后按原样使用:
python test.py -t "{\"key1\":\"value1\",\"key2\":\"value2\"}"
这将输出“value1”
这应该很容易分析你自己。由于事先不知道密钥,使用helper库会很复杂。文件名在sys.argv[1]中。您可以使用以“=”字符作为分隔符拆分的字符串列表来构建字典。
import sys filename = sys.argv[1] args = dict([arg.split('=', maxsplit=1) for arg in sys.argv[2:]]) print filename print args
输出:
$ Script.py file1 bob=1 sue=2 ben=3 file1 {'bob': '1', 'ben': '3', 'sue': '2'}
这就是要点,但是您可能需要对键值对进行更健壮的解析,而不仅仅是拆分字符串。另外,在尝试提取文件名之前,请确保在sys.argv中至少有两个参数。
sys.argv
希望这有帮助,而不是传递dict,您可以传递一个“转义”json字符串作为命令行参数
然后按原样使用:
这将输出“value1”
这应该很容易分析你自己。由于事先不知道密钥,使用helper库会很复杂。文件名在sys.argv[1]中。您可以使用以“=”字符作为分隔符拆分的字符串列表来构建字典。
输出:
这就是要点,但是您可能需要对键值对进行更健壮的解析,而不仅仅是拆分字符串。另外,在尝试提取文件名之前,请确保在
sys.argv
中至少有两个参数。相关问题 更多 >
编程相关推荐