Преобразуйте ConfigParser.items ('') к словарю

Если Вы используете LWP:: UserAgent непосредственно (не через LWP:: Простой), можно проверить имя узла в сертификате путем добавления "If-SSL-Cert-Subject" заголовка к объекту HTTP::Request. Значение заголовка рассматривают как регулярное выражение, которое будет применено на предмет сертификата, и если это не соответствует, сбои запроса. Например:

#!/usr/bin/perl 
use LWP::UserAgent;
my $ua = LWP::UserAgent->new();
my $req = HTTP::Request->new(GET => 'https://yourdomain.tld/whatever');
$req->header('If-SSL-Cert-Subject' => '/CN=make-it-fail.tld');

my $res = $ua->request( $req );

print "Status: " . $res->status_line . "\n"

распечатает

Status: 500 Bad SSL certificate subject: '/C=CA/ST=Ontario/L=Ottawa/O=Your Org/CN=yourdomain.tld' !~ //CN=make-it-fail.tld/
61
задан martineau 14 June 2014 в 17:33
поделиться

2 ответа

Фактически это уже сделано за вас в config._sections . Пример:

$ cat test.ini
[First Section]
var = value
key = item

[Second Section]
othervar = othervalue
otherkey = otheritem

А затем:

>>> from ConfigParser import ConfigParser
>>> config = ConfigParser()
>>> config.read('test.ini')
>>> config._sections
{'First Section': {'var': 'value', '__name__': 'First Section', 'key': 'item'}, 'Second Section': {'__name__': 'Second Section', 'otherkey': 'otheritem', 'othervar': 'othervalue'}}
>>> config._sections['First Section']
{'var': 'value', '__name__': 'First Section', 'key': 'item'}

Изменить: Мое решение той же проблемы было отклонено, поэтому я дополнительно проиллюстрирую, как мой ответ делает то же самое, не проходя раздел через dict () , потому что config._sections уже предоставлен модулем для вас .

Пример test.ini:

[db]
dbname = testdb
dbuser = test_user
host   = localhost
password = abc123
port   = 3306

Волшебное событие:

>>> config.read('test.ini')
['test.ini']
>>> config._sections
{'db': {'dbname': 'testdb', 'host': 'localhost', 'dbuser': 'test_user', '__name__': 'db', 'password': 'abc123', 'port': '3306'}}
>>> connection_string = "dbname='%(dbname)s' user='%(dbuser)s' host='%(host)s' password='%(password)s' port='%(port)s'"
>>> connection_string % config._sections['db']
"dbname='testdb' user='test_user' host='localhost' password='abc123' port='3306'"

Итак, это решение не неправильно, и фактически требуется на один шаг меньше. Спасибо, что заглянули!

51
ответ дан 24 November 2019 в 16:58
поделиться

Вы пробовали

print connection_string % dict(config.items('db'))

?

93
ответ дан 24 November 2019 в 16:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: