保存python argparse文件

时间:2017-02-18 18:17:06

标签: python argparse

Argparse有一个名为fromfile-prefix-chars的功能,它似乎只是我正在寻找的一半。如何从当前命令行参数创建此功能的文件?

我有一个复杂的脚本,其中包含一个解析器,可以自动执行部分代码构建。用例是第一次正确设置命令行,然后基本上使用相同的参数重新运行。

使用文件并从中加载似乎是实现我需要的一种很好的方式。似乎缺少的是将初始命令行写出到文件的简单方法,以便现有的文件解析能够正常工作。

2 个答案:

答案 0 :(得分:5)

文件格式记录清楚:

  

默认情况下,从文件读取的参数必须为每行一行[...]

并且文档中的代码示例显示他们编写的文件中包含换行符:

AppScene()

如果要保存当前命令行,只需将>>> with open('args.txt', 'w') as fp: ... fp.write('-f\nbar') 写入文件,参数之间有换行符:

sys.argv[1:]

演示:

with open('commandline_args.txt', 'w') as f:
    f.write('\n'.join(sys.argv[1:]))

答案 1 :(得分:0)

from argparse import ArgumentParser
import json

parser = ArgumentParser()
parser.add_argument('--seed', type=int, default=8)
parser.add_argument('--resume', type=str, default='a/b/c.ckpt')
parser.add_argument('--surgery', type=str, default='190', choices=['190', '417'])
args = parser.parse_args()

with open('commandline_args.txt', 'w') as f:
    json.dump(args.__dict__, f, indent=2)

parser = ArgumentParser()
args = parser.parse_args()
with open('commandline_args.txt', 'r') as f:
    args.__dict__ = json.load(f)

print(args)