第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Python中檢查文件是否未打開(其他進(jìn)程未使用)

在Python中檢查文件是否未打開(其他進(jìn)程未使用)

慕工程0101907 2019-12-25 14:05:11
在我的應(yīng)用程序中,我有以下要求:1.有一個線程將定期在文件中記錄一些日志。日志文件將在一定間隔內(nèi)翻轉(zhuǎn)。用于保持日志文件較小。2.還有另一個線程將定期處理這些日志文件。例如:將日志文件移到其他位置,解析日志內(nèi)容以生成一些日志報告。但是,有一個條件是第二個線程無法處理用于記錄日志的日志文件。在代碼方面,偽代碼類似如下:#code in second thread to process the log filesfor logFile in os.listdir(logFolder):     if not file_is_open(logFile) or file_is_use(logFile):          ProcessLogFile(logFile) # move log file to other place, and generate log report....那么,如何檢查文件是否已打開或被其他進(jìn)程使用?我在互聯(lián)網(wǎng)上做了一些研究。并得到一些結(jié)果:try:   myfile = open(filename, "r+") # or "a+", whatever you needexcept IOError:    print "Could not open file! Please close Excel!"我嘗試了此代碼,但是無論我使用“ r +”還是“ a +”標(biāo)志,該代碼均無效try:   os.remove(filename) # try to remove it directlyexcept OSError as e:    if e.errno == errno.ENOENT: # file doesn't exist        break該代碼可以工作,但是無法達(dá)到我的要求,因為我不想刪除該文件以檢查它是否打開。
查看完整描述

3 回答

?
楊魅力

TA貢獻(xiàn)1811條經(jīng)驗 獲得超6個贊

我喜歡Daniel的回答,但我意識到將文件重命名為它已經(jīng)擁有的名稱更安全,更簡單。這解決了他回答中提到的問題。我只是在評論中說過這一點,但我沒有要點。這是代碼:


import os


f = 'C:/test.xlsx'

if os.path.exists(f):

    try:

        os.rename(f, f)

        print 'Access on file "' + f +'" is available!'

    except OSError as e:

        print 'Access-error on file "' + f + '"! \n' + str(e)


查看完整回答
反對 回復(fù) 2019-12-25
?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗 獲得超10個贊

您可以使用下一個函數(shù)檢查文件上是否有句柄(請記住將完整路徑傳遞給該文件):


import psutil


def has_handle(fpath):

    for proc in psutil.process_iter():

        try:

            for item in proc.open_files():

                if fpath == item.path:

                    return True

        except Exception:

            pass


    return False


查看完整回答
反對 回復(fù) 2019-12-25
  • 3 回答
  • 0 關(guān)注
  • 1600 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號