我的代码是这样的:
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/