使用 Argparse 读取配置

Posted

技术标签:

【中文标题】使用 Argparse 读取配置【英文标题】:Reading Configurations using Argparse 【发布时间】:2018-04-09 15:27:28 【问题描述】:

在一个单独的配置文件中,我有以下内容:

charge 0

在我的程序中,我尝试使用 argparse 以便可以从另一个文件中读取一些配置。但是,输出是这样的:

Namespace(charge='charge 0')

我应该如何编写 add_argument 或 parse_args 以在我的值中排除“charge”一词?

【问题讨论】:

你是如何阅读这个文件的?使用fromfile_prefix_chars 机制?如果你展示了一个基本的工作parser,这可能会有所帮助。 我用了这 3 行: parser = argparse.ArgumentParser(fromfile_prefix_chars='@') parser.add_argument('charge', metavar='Charge', type=str) args = parser.parse_args( ) 你定义了一个positional,它需要1个字符串。默认的@ 阅读器从文件的每一行获取 1 个字符串。效果与您使用prog.py "charge 0" 给出命令行相同。解析后必须自己处理字符串。 文档也有一个关于自定义前缀文件阅读器的小节。 就解析字符串而言,这是使用另一个模块,还是可以使用 argparse? 【参考方案1】:

如果您希望能够在文件中省略“charge”,则继承 ArgumentParser 并覆盖 convert_arg_line_to_args

import argparse

class MyArgumentParser(argparse.ArgumentParser):

    def convert_arg_line_to_args(self, arg_line):
        """Remove the label from a given argument."""
        try:
            return arg_line.split()[1:]  # given 'charge 0', returns ['0']
        except IndexError:
            return arg_line.split()  # Only one element, just return in a list.

【讨论】:

以上是关于使用 Argparse 读取配置的主要内容,如果未能解决你的问题,请参考以下文章

Python:argparse 读取 csv 文件功能

argparse 读取 txt 文件

argparse简要用法总结

使用 Argparse 的 Python 错误

Python3 Argparse 试图读取文件并计算字母

argparse简要用法总结