Python: "AttributeError: ' 命名空间对象没有属性"argparse

标签 python

我的代码是这样的:

parser.add_argument('-i', '--input', help='Input path/to/file.csv', required=True)
parser.add_argument('-oh', '--output-html', help='Output path/to/confusion_matrix.html', required=True)
parser.add_argument('-oc', '--output-csv', help='Output path/to/confusion_matrix.csv', required=True)
args = parser.parse_args()

....

y_true = pd.Series(true_data, name="Actual")
y_pred = pd.Series(pred_data, name="Predicted")
df_confusion = pd.crosstab(y_true, y_pred)
df_confusion.to_html(args.output-html)
df_confusion.to_csv(args.output-csv)

当我尝试运行它时,它给我这个错误:

df_confusion.to_html(args.output-html)
AttributeError: 'Namespace' object has no attribute 'output'

但是,如果我从

df_confusion.to_html(args.output-html)

df_confusion.to_html(args.output)

它正常工作。谁能解释为什么它不起作用,我怎样才能让它与 args.output-html 一起工作?

最佳答案

默认情况下(即,如果您不向 add_argument 提供 dest kwarg),它会将 - 更改为 _ 在创建属性时,因为 Python 属性不能包含字符 -(事实上它们可以,但是它们只能通过使用 getattr 访问)。

这意味着你应该将args.output-html更改为args.output_html,将args.output-csv更改为 args.output_csv.

关于Python: "AttributeError: ' 命名空间对象没有属性"argparse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47095656/

相关文章:

python - 从 python 调用静态链接的 C 库在 Windows 上永远挂起,但在 OSX 或 Linux 上则不然

python - py.test : Can multiple markers be applied at the test function level?

python - 如何在 python unittest 中为此类使用 setUp 和 tearDown

python - 使用 pypy 运行 Nose 测试

python - 主脑号码位置值

python - pyparsing operatorPredence : ability to add parseAction to parentheses blocks

python - 在 python 中查找(并保留)子列表的副本

python - 创建一个 pandas 计数数据框

python - 我如何知道 Python 的 unicode 函数识别的所有支持的编码

python - Pandas 的调理