Присвоение более одного значения одному ключу в файле конфигурации
Я пытаюсь создать файл конфигурации, и мне нужно проанализировать его с помощью Python с помощью модуля ConfigParser.
Например, у меня были следующие настройки в файле config.sr
[basic]
basic=bz2,calendar,Core,ctype,curl,date,dom,ereg,exif,fileinfo,filter,ftp,gd,gettext,gmp,mhash,mysql,mysqli,openssl,pcntl,pcre,PDO,pdo_mysql,pdo_sqlite,Phar,readline
[advance]
advance=Reflection,session,shmop,SimpleXML,sockets,SPL,sqlite3,standard,tokenizer,wddx,xdebug,xml,xmlreader,xmlwriter,xsl,zip,zlib,Xdebug
Итак, как вы можете видеть, есть больше значений(29)
разделяется запятой и присваивается одной клавише basic
и работает нормально, когда я использовал ConfigParser
модуль для его анализа и извлечения результатов, но назначенные значения слишком длинные для объявления.
когда я назначил их в несколько строк, это отображает некоторые ошибки, более чем число значений, разделенных запятой, будет еще больше увеличено до 50, из-за чего возникает проблема с читаемостью, которая постоянно перемещается по курсору вперед.
Наконец, все, что я хочу знать, - как мы можем объявить значения, связанные с одним ключом, в нескольких строках конфигурации?
Пример формата
[basic]
basic=bz2,calendar,Core,ctype,curl,date,dom,ereg,exif,fileinfo,filter,ftp,gd,gettext,gmp,
hash,iconv,json,libxml,mbstring,mcrypt,mhash,mysql,mysqli,openssl,pcntl,pcre,PDO,pdo_mysql,
pdo_sqlite,Phar,readline
.............
1 ответ
Сделайте отступ от них:
[basic]
basic:
bz2
calendar
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
gettext
gmp
mhash
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
readline
ConfigParser будет иметь список, с которым вы можете делать то, что вам нравится.
config = ConfigParser.ConfigParser()
config.read('config.sr')
basic_list = config.get('basic', 'basic').split('\n')
Редактировать:
Выполнение кода следующим образом: My config.sr
:
[basic]
basic:
bz2
calendar
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
gettext
gmp
mhash
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
readline
[advanced]
advanced:
a
b
c
d
e
И мой файл с питоном: q_14934291.py
:
import ConfigParser
config = ConfigParser.ConfigParser()
config.read('config.sr')
basic_list = config.get('basic', 'basic').split('\n')
print('Basic list:')
print(basic_list)
advanced_list = config.get('advanced', 'advanced').split('\n')
print('\n\nAdvanced list:')
print(advanced_list)
Выход из него:
Basic list:
['', 'bz2', 'calendar', 'Core', 'ctype', 'curl', 'date', 'dom', 'ereg', 'exif', 'fileinfo', 'filter', 'ftp', 'gd', 'gettext', 'gmp', 'mhash', 'mysql', 'mysqli', 'openssl', 'pcntl', 'pcre', 'PDO', 'pdo_mysql', 'pdo_sqlite', 'Phar', 'readline']
Advanced list:
['', 'a', 'b', 'c', 'd', 'e']
Убедитесь, что вы используете правильный отступ (4 пробела). Если вы используете неправильный отступ, это приведет к ошибке.
Кроме того, вам нужно .split('\n')
на входе. Я забыл эту часть извините.
Если вы не хотите пустую запись в начале, также strip
вход:
basic_list = config.get('basic', 'basic').strip().split('\n')