python - 如何从命名空间字符串加载 argparse?
问题描述
import argparse
parser = argparse.ArgumentParser(fromfile_prefix_chars='@')
parser.add_argument('--a', default=1)
args = parser.parse_args()
然后我将 args 存储到文件中:
with open('/tmp/a', 'w') as f:
f.write(str(args))
文件中的内容是这样的:
Namespace(a='2')
那么,如何将此字符串加载到 args 中?
解决方案
刚刚测试它 -pickle
与一个argparse.Namespace
对象一起工作:
In [727]: import pickle
In [728]: pickle.dumps(argparse.Namespace(a=10))
Out[728]: b'\x80\x03cargparse\nNamespace\nq\x00)\x81q\x01}q\x02X\x01\x00\x00\x00aq\x03K\nsb.'
In [729]: pickle.loads(_)
Out[729]: Namespace(a=10)
这需要一个导入的argparse
.
以及我在评论中建议的字典泡菜:
In [730]: pickle.dumps(vars(_))
Out[730]: b'\x80\x03}q\x00X\x01\x00\x00\x00aq\x01K\ns.'
In [731]: pickle.loads(_)
Out[731]: {'a': 10}
推荐阅读
- python - 如何使用内部列表中的排序键对列表列表进行排序?
- android - 在 Espresso 中获取按钮背景颜色
- pandas - 如何仅从具有特定列的熊猫数据框中创建 OD 矩阵
- python - 如何从 python 中的 numpy.array() 字典中获取密钥
- sql - 如何创建动态 sql 查询来更新表列
- php - 如何通过ajax请求在froala编辑器中发送额外的表单数据?
- python - Django Model Mocking - 更好地创建模型或模拟模型进行测试?
- android - 将约束布局库升级到 2.0.2 应用程序崩溃后
- r - 在 r 中读取和重塑数据框
- optimization - 在 Z3 中优化有符号位向量