logging模組,shutil模組

2022-05-26 17:18:12 字數 3258 閱讀 9124

用於便捷記錄日誌且執行緒安全的模組

1、單檔案日誌

import logging

logging.basicconfig(filename='檔名.log',

format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',

datefmt='%y-%m-%d %h:%m:%s %p', # 時間格式

level=10) # 只將等級大於等於10的日誌記錄到檔案中,建議寫成level=logging.debug這種形式

"""日誌等級:

critical = 50

fatal = critical

error = 40

warning = 30

warn = warning

info = 20

debug = 10

notset = 0

"""logging.debug('debug')

logging.info('info')

logging.warning('warning')

logging.error('error')

logging.critical('critical')

# 上面所有的命令實際上都是呼叫的下面**

logging.log(10, 'log')

2、多檔案日誌

對於上述記錄日誌的功能,只能將日誌記錄在單檔案中,如果想要設定多個日誌檔案,logging.basicconfig將無法完成,需要自定義檔案和日誌操作物件。

import logging

# 定義檔案

file_1_1 = logging.filehandler('l1_1.log', 'a', encoding='utf-8')

# 定義格式

fmt = logging.formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s")

# 應用格式

file_1_1.setformatter(fmt)

file_1_2 = logging.filehandler('l1_2.log', 'a', encoding='utf-8')

fmt = logging.formatter()

file_1_2.setformatter(fmt)

# 定義日誌等級

logger1 = logging.logger('s1', level=logging.error)

# 新增日誌等級

logger1.addhandler(file_1_1)

logger1.addhandler(file_1_2)

# 寫日誌

logger1.critical('1111')

高階的 檔案、資料夾、壓縮包 處理模組

shutil.copyfileobj(fsrc, fdst[, length])

將檔案內容拷貝到另乙個檔案中

shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))

shutil.copyfile(src, dst)

拷貝檔案

shutil.copyfile('f1.log', 'f2.log')

shutil.copymode(src, dst)

僅拷貝許可權。內容、組、使用者均不變

shutil.copymode('f1.log', 'f2.log')

shutil.copystat(src, dst)

僅拷貝狀態的資訊,包括:mode bits, atime, mtime, flags

shutil.copystat('f1.log', 'f2.log')

shutil.copy(src, dst)

拷貝檔案和許可權

shutil.copy('f1.log', 'f2.log')

shutil.copy2(src, dst)

拷貝檔案和狀態資訊

shutil.copy2('f1.log', 'f2.log')

shutil.ignore_patterns(*patterns)

shutil.copytree(src, dst, symlinks=false, ignore=none)

遞迴的去拷貝資料夾

shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))

# 忽略.pyc和.tmp檔案

shutil.rmtree(path[, ignore_errors[, onerror]])

遞迴的去刪除檔案

shutil.rmtree('folder1')

shutil.move(src, dst)

遞迴的去移動檔案,它類似mv命令,其實就是重新命名。

shutil.move('folder1', 'folder3')

shutil.make_archive(base_name, format,...)

建立壓縮包並返回檔案路徑,例如:zip、tar

建立壓縮包並返回檔案路徑,例如:zip、tar

#將 /usr/test 下的檔案打包放置當前程式目錄

import shutil

ret = shutil.make_archive("壓縮後檔名", 'gztar', root_dir='/usr/test')

#將 /bin 下的檔案打包放置 /usr/ 目錄下

import shutil

ret = shutil.make_archive("/usr/壓縮後檔名", 'gztar', root_dir='/bin')

遞迴練習 shutil模組 logging模組

os模組 檢視乙個資料夾下的所有檔案,這個資料夾下面還有資料夾,不能用walk import os defshow file path name lst os.listdir path for name in name lst abs path os.path.join path,name if o...

shutil 模組 os模組

shutil.copyfile src,dst 從源src複製到dst中去。如果當前的dst已存在的話就會被覆蓋掉 shutil.move src,dst 移動檔案或重新命名 shutil.copymode src,dst 只是會複製其許可權其他的東西是不會被複製的 shutil.copystat ...

shutil模組 python shutil模組

shutil.copyfile src,dst 從源src複製到dst中去。當然前提是目標位址是具備可寫許可權。丟擲的異常資訊為ioexception.如果當前的dst已存在的話就會被覆蓋掉 shutil.move src,dst 移動檔案或重新命名 shutil.copymode src,dst ...