Heim >Backend-Entwicklung >Python-Tutorial >Einführung in Python-Pakete und Protokollierung
Python-Paket und Protokollierung
1. Paket
Paket : Ein Paket mit einer __init__.py-Datei in einem Ordner wird zum Verwalten mehrerer Module verwendet
Die Struktur des Pakets ist wie folgt:
bake ├── __init__.py ├── api ├── __init__.py ├── policy.py └── versions.py ├── cmd ├── __init__.py └── manage.py └── db ├── __init__.py └── models.py
Erstellen Sie eine test.py auf derselben Ebene wie backen Import Policy.py:
import bake.api.policy bake.api.policy.get() #导入的名字太长了,可以起别名 import bake.api.policy as p p.get() #from 导入在__init__.py修改 from . import policy #我们需要在policy文件中向sys.path添加了当前的路径 import os import sys sys.path.insert(os.path.dirname(__file__)) #print(__file__)查看一下 #使用__all__,在__init__.py中 __all__ = ["policy"] #或 from . import policy
Zusammenfassung:
import package.package.package
aus package.package.package Importmodul
Pfad:
Absolut: Import aus der äußeren Ebene
Relativ: Import aus der aktuellen (.) oder der übergeordneten Ebene (..)
Bei Verwendung relativer Pfade müssen diese bei sein das Ende des Pakets Äußere Schicht und gleiche Ebene
vom Paketimport *
muss in __init__.py erfolgen
Python2: Importordner (ohne __init__.py) meldet einen Fehler
python3: Der Importordner (ohne __init__.py) meldet keinen Fehler
Verwandte Empfehlungen: „Python Video Tutorial“
2, Protokollierungsmodul
Das Protokollierungsmodul dient zur Aufzeichnung verschiedener Status der Software, Transaktionsaufzeichnungen, Fehleraufzeichnungen, Anmeldeaufzeichnungen...
1. Funktionale einfache Konfiguration:
import logging logging.debug('debug message') logging.info('info message') logging.warning('warning message') logging.error('error message') logging.critical('critical message')
Standardmäßig druckt das Protokollierungsmodul von Python Protokolle in der Standardausgabe und zeigt nur Protokolle an, die größer oder gleich der Stufe WARNING sind, was beweist, dass die Standardstufe WARNING ist
Protokollebene: KRITISCH > WARNUNG > DEBUG
2 🎜>
kann nur das Schreiben von Protokollen nicht auf dem öffentlichen Bildschirm ausgegeben werdenimport logging logging.basicConfig(level = logging.DEBUG, format = '%(astime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s', datefmt = '%Y-%m-%d %H:%M:%S', filename = 'test.log', filemode = 'a') dic = {"key":123} logging.debug(dic) num = 100 logging.info(f"用户余额:{num - 50}") try: num = int(input("请输入数字:")) except Exception as e: logging.warning("e") logging.error('error message') logging.critical('critical message')
Die Funktion „basicConfig()“ kann bestimmte Parameter verwenden, um das Standardverhalten des Protokollierungsmoduls zu ändern sind:
Dateiname: Verwendung Erstellt einen FiledHandler mit dem angegebenen Dateinamen, sodass das Protokoll in der angegebenen Datei gespeichert wird. Dateimodus: Dateiöffnungsmodus. Dieser Parameter wird verwendet, wenn der Dateiname angegeben ist. Der Standardwert ist „a“ und kann auch als „w“ angegeben werden. Format: Geben Sie das vom Handler verwendete Protokollanzeigeformat an. datefmt: Geben Sie das Datums- und Uhrzeitformat an. Ebene: Legen Sie die Protokollierungsebene fest. Stream: Erstellen Sie einen StreamHandler mit dem angegebenen Stream. Sie können die Ausgabe in sys.stderr, sys.stdout oder Datei (f=open(‘test.log’,’w’)) angeben, der Standardwert ist sys.stderr. Wenn sowohl Dateiname als auch Stream-Parameter aufgeführt sind, wird der Stream-Parameter ignoriert.Formatzeichenfolge, die im Formatparameter verwendet werden kann:
%(name)s Name des Loggers %(levelno)s numerische Form Protokoll level %(levelname)s Protokollebene in Textform %(pathname)s Der vollständige Pfadname des Moduls, das die Protokollausgabefunktion aufruft, möglicherweise kein % (filename)s Der Dateiname des Moduls, das die Protokollausgabefunktion aufruft%(module)s Der Modulname, der die Protokollausgabefunktion aufruft%(funcName)s Der Funktionsname, der die Protokollausgabefunktion aufruft%(lineno)d Die Codezeile, in der sich die Anweisung befindet, die die Protokollausgabefunktion aufruft %(created)f Die aktuelle Zeit, dargestellt durch eine UNIX-Standard-Gleitkommazahl, die die Zeit darstellt %(relativeCreated)d Die Anzahl der Millisekunden seit der Erstellung des Loggers bei der Ausgabe von Protokollinformationen %(asctime)s Die aktuelle Zeit im Formular einer Zeichenfolge. Das Standardformat ist „2003-07-08 16:49:45,896“. Was auf das Komma folgt, sind Millisekunden%(thread)d Thread-ID. Möglicherweise sind keine %(threadName)s Thread-Namen vorhanden. Möglicherweise ist keine Prozess-ID %(process)d vorhanden. Möglicherweise werden von %(message)s Benutzern3.Logger-Objektkonfiguration (mittlere Version)
import logging logger = logging.getLogger() # 创建一个logger fh = logging.FileHandler('test.log',mode="a",encoding='utf-8') # 文件 ch = logging.StreamHandler() # 屏幕 formatter = logging.Formatter('%(asctime)s - %(name)s - %(filename)s - [line:%(lineno)d] - %(levelname)s - %(message)s') # 将屏幕和文件都是用以上格式 logger.setLevel(logging.DEBUG) # 设置记录级别 fh.setFormatter(formatter) # 使用自定义的格式化内容 ch.setFormatter(formatter) logger.addHandler(fh) #logger对象可以添加多个fh和ch对象 logger.addHandler(ch) logger.debug('logger debug message') logger.info('logger info message') logger.warning('logger warning message') logger.error('logger error message') logger.critical('logger critical message')keine Nachrichten ausgegeben
Das obige ist der detaillierte Inhalt vonEinführung in Python-Pakete und Protokollierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!