1

構成ファイルを作成しようとしていますが、ConfigParserモジュールを使用してPythonで解析する必要があります

たとえば、私はファイルに以下の設定を持っていました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

.............
4

1 に答える 1

2

それらをインデントします:

[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

そして私のPythonファイル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')
于 2013-02-18T10:49:04.230 に答える