#python #argparse
#python #argparse
Вопрос:
Я пытаюсь использовать argparse в первый раз. Я пытался написать код, но, к сожалению, я получаю сообщение об ошибке.
import argparse
import pandas as pd
from data_util.data_loader import Data_load
def argparser():
parser = argparse.ArgumentParser(description='Parameters')
parser = parser.add_argument('--dataset_path', help='data_directory',metavar='Path',
default='D:/content_search/data_util/data/ArticleDataset.json')
args = parser.parse_args()
return args
def main():
args = argparser()
data_frame = Data_load(args.dataset_path)
print(data_frame)
if __name__ == '__main__':
main()
Я получаю следующую ошибку:
D:Content_searchScriptspython.exe D:/content_search/main.py
Traceback (most recent call last):
File "D:/content_search/main.py", line 21, in <module>
main()
File "D:/content_search/main.py", line 15, in main
args = argparser()
File "D:/content_search/main.py", line 10, in argparser
args = parser.parse_args()
AttributeError: '_StoreAction' object has no attribute 'parse_args'
Process finished with exit code 1
Пожалуйста, помогите мне понять, где я допустил ошибку. Заранее спасибо.
Комментарии:
1. Какова цель этого
parser
переназначения?parser = parser.add_argument(...)
В документации нет ничего, что предлагало бы это сделать, не так ли?2. Я не знаю, понял ли я вопрос. Я нашел это использование в документе. docs.python.org/3/howto/argparse.html Его вызывающий метод .add_argument .
Ответ №1:
Вы определяете синтаксический анализатор два раза в своей функции arparser (). Удалите parser = parser.add_argument и используйте только parser.add_argument, как показано ниже.
import argparse
import pandas as pd
from data_util.data_loader import Data_load
def argparser():
parser = argparse.ArgumentParser(description='Parameters')
parser.add_argument('--dataset_path', help='data_directory',metavar='Path',
default='D:/content_search/data_util/data/ArticleDataset.json')
args = parser.parse_args()
return args
def main():
args = argparser()
data_frame = Data_load(args.dataset_path)
print(data_frame)
if __name__ == '__main__':
main()
Комментарии:
1. Большое спасибо за помощь. Это была действительно глупая ошибка с моей стороны.
2. Проверьте эту ссылку для получения некоторых интересных подробностей об argparse: realpython.com/command-line-interfaces-python-argparse