Heim >Backend-Entwicklung >Python-Tutorial >Einführung in Python-Pakete und Protokollierung

Einführung in Python-Pakete und Protokollierung

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼nach vorne
2019-08-08 17:55:182293Durchsuche

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 werden

import 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 Benutzern

3.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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen