[PYTHON] Verwendung des ConfigParser-Moduls

Ich habe das ConfigParser-Modul untersucht, das die Konfigurationsdatei (INI-Datei) verarbeitet.

Was ist eine INI-Datei?

INI File-Wikipedia

Umgang mit INI-Dateien in Python

Python bietet ConfigParser, ein Modul, das standardmäßig INI-Dateien lesen und schreiben kann.

13.2. ConfigParser - Konfigurationsdatei-Syntaxanalysator - Python 2.7ja1-Dokumentation

Beispielversion von Python 2 (check_config.py)

Also habe ich das folgende Tool als Beispiel erstellt. Läuft unter Python 2.7.

check_config.py



#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
check_config.py
Dienstprogramm zum Überprüfen der INI-Datei

Hinweis!
Die Fehlerprüfung ist schlampig.
'''

import ConfigParser
import os
import sys


def show_config(ini):
    '''
Alle Inhalte der Einstellungsdatei anzeigen (ausgenommen Kommentare)
    '''
    for section in ini.sections():
        print '[%s]' % (section)
        show_section(ini, section)
    return


def show_section(ini, section):
    '''
Zeigen Sie den Inhalt eines bestimmten Abschnitts der Konfigurationsdatei an
    '''
    for key in ini.options(section):
        show_key(ini, section, key)
    return


def show_key(ini, section, key):
    '''
Zeigen Sie den Inhalt eines bestimmten Schlüsselelements (einer bestimmten Eigenschaft) in einem bestimmten Abschnitt der Einstellungsdatei an
    '''
    print '%s.%s =%s' % (section, key, ini.get(section, key))
    return


def set_value(ini, section, key, value):
    '''
Ändern Sie den Inhalt eines bestimmten Schlüsselelements (einer bestimmten Eigenschaft) in einem bestimmten Abschnitt der Einstellungsdatei
    '''
    ini.set(section, key, value)
    print 'set %s.%s =%s' % (section, key, ini.get(section, key))
    return


def usage():
    sys.stderr.write("Usage: %s inifile [section [key [value]]]\n" % sys.argv[0])
    return


if __name__ == '__main__':
    argc = len(sys.argv)
    if argc == 1:
        usage()
        sys.exit(1)

    #Konfigurationsdatei lesen
    INI_FILE = sys.argv[1]
    ini = ConfigParser.SafeConfigParser()
    if os.path.exists(INI_FILE):
        ini.read(INI_FILE)
    else:
        sys.stderr.write('%s nicht gefunden' % INI_FILE)
        sys.exit(2)

    if argc == 2:
        show_config(ini)
    elif argc == 3:
        show_section(ini, sys.argv[2])
    elif argc == 4:
        show_key(ini, sys.argv[2], sys.argv[3])
    elif argc == 5:
        set_value(ini, sys.argv[2], sys.argv[3], sys.argv[4])
        #In eine Datei schreiben (Achtung! In der aktuellen Situation werden Kommentare und Zeilenumbrüche gelöscht)
        f = open(INI_FILE, "w")
        ini.write(f)
        f.close()
    else:
        usage()
        sys.exit(3)

    sys.exit(0)
#EOF

Wie benutzt man

Nun, wie Sie aus dem Quellcode sehen können, w

python


python check_config.py

Wenn kein Argument angegeben ist. Verwendung anzeigen (). Es ist eine versprochene Art von UNIX-Befehlen.

python


python check_config.py inifile

Wenn es nur ein Argument gibt. Geben Sie im ersten Argument den Dateinamen der INI-Datei an. Zeigen Sie den Inhalt von inifile an.

python


python check_config.py inifile section

Wenn es zwei Argumente gibt. Geben Sie im zweiten Argument den Abschnitt der INI-Datei an. Zeigen Sie den Inhalt eines bestimmten Abschnitts einer Inifile an.

python


python check_config.py inifile section key

Wenn es drei Argumente gibt. Geben Sie im dritten Argument das Schlüsselelement (den Schlüssel) eines bestimmten Abschnitts der INI-Datei an. Zeigen Sie den Inhalt eines bestimmten Schlüsselelements (Schlüssels) eines bestimmten Abschnitts einer Inifile an.

python


python check_config.py inifile section key value

Wenn es vier Argumente gibt. Geben Sie im 4. Argument den Inhalt (Wert) an, der für das Schlüsselelement des spezifischen Abschnitts der INI-Datei geändert werden soll. Nur dieser Vorgang schreibt die INI-Datei neu. Ein bestimmtes Schlüsselelement (Schlüssel) eines bestimmten Abschnitts von inifile wurde in den Inhaltswert geändert.

Beispielversion von Python 3

Heutzutage ist die Python2-Version lächerlich, deshalb haben wir auch die Python3-Version vorbereitet.

Läuft unter Python 3.5.

check_config.py



#!/usr/bin/env python3
# -*- coding: utf-8 -*-
'''
check_config.py
Dienstprogramm zum Überprüfen der INI-Datei

Hinweis!
Die Fehlerprüfung ist schlampig.
'''

import configparser
import os
import sys


def show_config(ini):
    '''
Alle Inhalte der Einstellungsdatei anzeigen (ausgenommen Kommentare)
    '''
    for section in ini.sections():
        print ("[" + section + "]")
        show_section(ini, section)
    return


def show_section(ini, section):
    '''
Zeigen Sie den Inhalt eines bestimmten Abschnitts der Konfigurationsdatei an
    '''
    for key in ini.options(section):
        show_key(ini, section, key)
    return


def show_key(ini, section, key):
    '''
Zeigen Sie den Inhalt eines bestimmten Schlüsselelements (einer bestimmten Eigenschaft) in einem bestimmten Abschnitt der Einstellungsdatei an
    '''
    print (section + "." + key + " = " + ini.get(section, key))
    return


def set_value(ini, section, key, value):
    '''
Ändern Sie den Inhalt eines bestimmten Schlüsselelements (einer bestimmten Eigenschaft) in einem bestimmten Abschnitt der Einstellungsdatei
    '''
    ini.set(section, key, value)
    print (section + "." + key + " = " + ini.get(section, key))
    return


def usage():
    sys.stderr.write("Usage: " + sys.argv[0] + " inifile [section [key [value]]]\n")
    return


if __name__ == '__main__':
    argc = len(sys.argv)
    if argc == 1:
        usage()
        sys.exit(1)

    #Konfigurationsdatei lesen
    INI_FILE = sys.argv[1]
    ini = configparser.SafeConfigParser()
    if os.path.exists(INI_FILE):
        ini.read(INI_FILE, encoding='utf8')
    else:
        sys.stderr.write(INI_FILE + "Nicht gefunden")
        sys.exit(2)

    if argc == 2:
        show_config(ini)
    elif argc == 3:
        show_section(ini, sys.argv[2])
    elif argc == 4:
        show_key(ini, sys.argv[2], sys.argv[3])
    elif argc == 5:
        set_value(ini, sys.argv[2], sys.argv[3], sys.argv[4])
        #In eine Datei schreiben (Achtung! In der aktuellen Situation werden Kommentare und Zeilenumbrüche gelöscht)
        with open(INI_FILE, "w", encoding='utf8') as f:
            ini.write(f)
    else:
        usage()
        sys.exit(3)

    sys.exit(0)
#EOF

Recommended Posts

Verwendung des ConfigParser-Moduls
Verwendung des optparse-Moduls
Verwendung des Generators
Wie benutzt man den Dekorateur?
Verwendung der Zip-Funktion
Verwendung von Raspeye Relay Module Python
Verwendung des Python-Protokollierungsmoduls
Verwendung der Spark ML-Pipeline
[Linux] Verwendung des Befehls echo
Verwendung des IPython-Debuggers (ipdb)
Verwendung des externen Moduls von TouchDesigner Python
Verwendung von xml.etree.ElementTree
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Wie benutzt man Seaboan?
Verwendung von Image-Match
Wie man Shogun benutzt
Verwendung von Pandas 2
Verwendung von Virtualenv
Verwendung von numpy.vectorize
Verwendung von pytest_report_header
Wie man teilweise verwendet
Wie man Bio.Phylo benutzt
Wie man x-means benutzt
Verwendung von WikiExtractor.py
Verwendung von IPython
Verwendung von virtualenv
Wie benutzt man Matplotlib?
Verwendung von iptables
Verwendung von TokyoTechFes2015
Verwendung des Wörterbuchs {}
Wie benutzt man Pyenv?
Verwendung der Liste []
Wie man Python-Kabusapi benutzt
Verwendung von OptParse
Verwendung von return
Wie man Imutils benutzt
Verwendung der C-Bibliothek in Python
Verwendung der Grafikzeichnungsbibliothek Bokeh
Verwendung der Google Cloud Translation API
Verwendung der NHK-Programmführer-API
Verwendung von Qt Designer
Verwendung der Suche sortiert
[gensim] Verwendung von Doc2Vec
python3: Verwendung der Flasche (2)
Verstehen Sie, wie man Django-Filter verwendet
[Python] Verwendung von Liste 1
Verwendung von FastAPI ③ OpenAPI
Wie benutzt man Python Argparse?
Verwendung von IPython Notebook
Wie man Pandas Rolling benutzt
[Hinweis] Verwendung von virtualenv
Verwendung von Redispy-Wörterbüchern
Python: Wie man pydub benutzt
[Python] Verwendung von checkio
[Go] Verwendung von "... (3 Perioden)"