【问题标题】:Python argparse boolean issuePython argparse布尔问题
【发布时间】:2015-05-09 21:50:29
【问题描述】:

我无法设置布尔值。我的代码是:

training_pages_list_file = ''
html_page_dir = ''
clf_file_str = ''
user_idf_param = False

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Classify some CraigsList Pages')
    parser.add_argument('csv_file', action='store')
    parser.add_argument('file_dir', action='store')
    parser.add_argument('clf_file', action='store')
    parser.add_argument('-i', action='store_true', help="include idf", dest=user_idf_param, default=False)
    args = parser.parse_args()

但是,这会引发:

hon3.4/argparse.py", line 1721, in parse_args
    args, argv = self.parse_known_args(args, namespace)
  File "/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/argparse.py", line 1742, in parse_known_args
    if not hasattr(namespace, action.dest):
TypeError: hasattr(): attribute name must be string

如果包含-i,我怎样才能拥有它,它会将user_idf_param 设置为True

【问题讨论】:

标签: python arguments argparse


【解决方案1】:

看起来user_idf_param 应该是告诉您是否使用它的属性的名称。

import argparse

training_pages_list_file = ''
html_page_dir = ''
clf_file_str = ''
user_idf_param = "i_param_used"

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Classify some CraigsList Pages')
    parser.add_argument('csv_file', action='store')
    parser.add_argument('file_dir', action='store')
    parser.add_argument('clf_file', action='store')
    parser.add_argument('-i', action='store_true', help="include idf", dest=user_idf_param, default=False)

    args = parser.parse_args((...))

    if args.i_param_used:
        ...

【讨论】:

  • 谢谢!这根本不是我所期待的。这个模块的文档真的很糟糕
  • argparse 的作者可能假设用户已经熟悉像 optparseget_opt 这样的旧解析器,并掩盖了可能使 Python 初学者感到困惑的问题。
猜你喜欢
  • 1970-01-01
  • 2014-08-24
  • 2018-07-25
  • 2019-11-02
  • 2019-02-23
  • 2013-02-07
相关资源
最近更新 更多