Argparse有一个名为fromfile-prefix-chars
的功能,它似乎只是我正在寻找的一半。如何从当前命令行参数创建此功能的文件?
我有一个复杂的脚本,其中包含一个解析器,可以自动执行部分代码构建。用例是第一次正确设置命令行,然后基本上使用相同的参数重新运行。
使用文件并从中加载似乎是实现我需要的一种很好的方式。似乎缺少的是将初始命令行写出到文件的简单方法,以便现有的文件解析能够正常工作。
答案 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)