python3 flask 文件占用未釋放問題
背景
刪除文件報(bào)錯(cuò)文件被進(jìn)程占用
starttime = datetime.datetime.now()
files = os.listdir(os.getcwd())
if 'scan.log' in files:
os.remove(os.path.join(os.getcwd(), 'scan.log'))
if 'scanResult.log' in files:
os.remove(os.path.join(os.getcwd(), 'scanResult.log'))
原因
python logging模塊打日志,句柄未釋放導(dǎo)致,本地test.py調(diào)試不會出問題因?yàn)閜ython執(zhí)行完會退出
解決
在刪除文件前,調(diào)logging.shutdown()
import logging
from logging.handlers import TimedRotatingFileHandler
formatter = logging.Formatter(
fmt='[%(levelname)s] %(asctime)s %(message)s',
datefmt="%Y-%m-%d_%H:%M:%S"
)
def getLogger(name,logPath):
logger = logging.getLogger(name)
logger.setLevel(logging.INFO)
if not logger.handlers:
sh = logging.StreamHandler()
sh.setLevel(logging.ERROR)
fh = TimedRotatingFileHandler(logPath, when='midnight', backupCount=30, encoding='utf-8')
fh.setFormatter(logging.INFO)
sh.setFormatter(formatter)
fh.setFormatter(formatter)
logger.addHandler(sh)
logger.addHandler(fh)
return logger
def shutdown():
logging.shutdown()
排錯(cuò)
懷疑自己寫的with open沒釋放?按道理會自動釋放,加了行f.close還是報(bào)錯(cuò)被占用
懷疑上傳文件未及時(shí)釋放,ftp.quit()、ftp.close()、還是不行
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python中pytest收集用例規(guī)則與運(yùn)行指定用例詳解
這篇文章主要介紹了python中pytest收集用例規(guī)則與運(yùn)行指定用例詳解,天會講解一下pytest是如何收集我們寫好的用例?我們又有哪些方式來運(yùn)行單個(gè)用例或者批量運(yùn)行用例呢,需要的朋友可以參考下2019-06-06
Python類中方法種類與修飾符從基礎(chǔ)到實(shí)戰(zhàn)詳解
在Python面向?qū)ο缶幊讨?方法有不同的種類和修飾符,它們各自有著特定的用途和行為,本文將全面解析Python中的各種方法類型,并通過一個(gè)綜合案例幫助你徹底掌握這些概念,需要的朋友可以參考下2025-07-07
Python機(jī)器學(xué)習(xí)之AdaBoost算法
今天帶大家來學(xué)習(xí)Python機(jī)器學(xué)習(xí),文中對AdaBoost算法介紹的很詳細(xì),有非常多的代碼示例,對正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下2021-05-05
Python+wxPython開發(fā)一個(gè)文件屬性比對工具
在日常的文件管理工作中,我們經(jīng)常會遇到同一個(gè)文件存在多個(gè)版本,或者需要驗(yàn)證備份文件與源文件是否一致,下面我們就來看看如何使用wxPython模塊開發(fā)一個(gè)實(shí)用的文件屬性比對工具吧2025-11-11
Python argparse中的action=store_true用法小結(jié)
這篇文章主要介紹了Python argparse中的action=store_true用法小結(jié),本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02
pytorch: Parameter 的數(shù)據(jù)結(jié)構(gòu)實(shí)例
今天小編就為大家分享一篇pytorch: Parameter 的數(shù)據(jù)結(jié)構(gòu)實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
django使用定時(shí)任務(wù)django_apscheduler的實(shí)現(xiàn)
定時(shí)任務(wù)無論是個(gè)人開發(fā)還是企業(yè)業(yè)務(wù)都是需要的,本文主要介紹了django使用定時(shí)任務(wù)django_apscheduler的實(shí)現(xiàn),減少請求時(shí)需要用戶等待的時(shí)間,感興趣的可以了解一下2021-08-08
Python數(shù)據(jù)結(jié)構(gòu)列表
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)列表,本文重點(diǎn)內(nèi)容主要是對列表數(shù)據(jù)結(jié)構(gòu)的使用,在Python中,序列是一組按順序排列的值。Python?有?3?種內(nèi)置的序列類型:字符串、?元組和列表,下面一起進(jìn)入文章了解更詳細(xì)內(nèi)容吧,需要的小伙伴可以參考一下</P><P>2021-12-12

