Как извлечь данные из ConfigParser - PullRequest
0 голосов
/ 25 января 2020

Я создаю задание cron, и данные должны быть прочитаны из файла конфигурации. Я использую модуль Python ConfigParser для достижения этой цели, но я не могу прочитать данные с помощью аргумента командной строки и подкоманды. Я использую Python argparse модуль для аргумента командной строки и подкоманды. Помогите пожалуйста.

Вот файл конфигурации:

[ARGUMENTS]
n1=5
n2=7

Вот код, который делает работу:

import argparse
import sys
import configparser

def main(number, other_number):
    result = number * other_number
    print(f'The result is {result}')

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Running Cron Job...')
    parser.add_argument('-n1', type=int, help='A number', default=1)
    parser.add_argument('-n2', type=int, help='Another number', default=1)

    parser.add_argument('--config', '-c', type=argparse.FileType('r'), help='config file')

    args = parser.parse_args()

    if args.config:
        config = configparser.ConfigParser()
        config.read_file(args.config)

        # Transform values into integers
        args.n1 = int(config['DEFAULT']['n1'])
        args.n2 = int(config['DEFAULT']['n2'])
    main(args.n1, args.n2)

1 Ответ

0 голосов
/ 25 января 2020

Это правильный ответ на вопрос.

Я обнаружил, что в файлах конфигурации есть раздел, где каждый раздел возглавляется заголовком раздела, например [SECTION], но мой код ищет раздел [DEFAULT], которого нет в файле конфигурации, скорее он содержит заголовок раздела [ARGUMENT], а не [DEFAULT].

. Здесь файл конфигурации должен выглядеть следующим образом:

[DEFAULT]
n1=5
n2=7

Вот правильный код для получения конфигурации данные:

ПРИМЕЧАНИЕ: Код в порядке, ничего не изменилось

...
...
...

    if args.config:
        config = configparser.ConfigParser()
        config.read_file(args.config)

        # Transform values into integers
        args.n1 = int(config['DEFAULT']['n1'])
        args.n2 = int(config['DEFAULT']['n2'])
    main(args.n1, args.n2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...