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

时间:2017-11-03 12:19:11

标签: 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一起工作?

1 个答案:

答案 0 :(得分:4)

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

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