最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python判斷一個文件是否被占用的方法教程

 更新時間:2020年12月16日 16:13:56   作者:天元浪子  
這篇文章主要給大家介紹了關(guān)于如何使用Python判斷一個文件是否被占用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

今天有同學(xué)問,用os模塊的access()能否判斷一個文件是否被占用?直覺上,這是行不通的,因為access()返回的是文件的讀寫屬性。為了確認這一點,我簡單測試了一下。

>>> import os
>>> fn = r'D:\temp\csdn\t.py' # 測試用的文件
>>> os.access(fn, os.F_OK) # 文件是否存在
True
>>> os.access(fn, os.R_OK) # 文件是否可讀
True
>>> os.access(fn, os.W_OK) # 文件是否可寫
True
>>> os.access(fn, os.X_OK) # 文件是否可執(zhí)行
True
>>> fp = open(fn, 'a+') # 以追加寫的方式打開文件
>>> os.access(fn, os.F_OK) # 文件當(dāng)然還在
True
>>> os.access(fn, os.R_OK) # 文件依然可讀
True
>>> os.access(fn, os.W_OK) # 文件依然可寫
True
>>> os.access(fn, os.X_OK) # 文件依然執(zhí)行
True
>>> fp.close()

可見,os.access()返回的是文件讀寫屬性,與文件是否被占用沒有半毛錢關(guān)系。

后來,群里有同學(xué)建議說,不妨用try嘗試著open文件,如果成功,表示文件沒有被占用,如果拋出異常,則表示文件被占用。果真如此嗎?還是用代碼驗證一下吧。

>>> fp1 = open(fn, 'a+')
>>> fp2 = open(fn, 'a+')
>>> fp1.close()
>>> fp2.close()

結(jié)果表明,對同一個文件以寫的方式打開多次,系統(tǒng)并沒有拋出異常。為什么會這樣呢?究其原因,是因為文件被打開和文件被占用是完全兩個不同的問題。順便提醒一下,做上面的測試時,不要使用'w'的方式,否則文件內(nèi)容會被清空。

那么,究竟應(yīng)該如何用Python判斷一個文件是否被占用呢?這個問題還是要回歸到操作系統(tǒng)層面來解決,也就是依賴win32api模塊。

>>> import win32file
>>> def is_used(file_name):
	try:
		vHandle = win32file.CreateFile(file_name, win32file.GENERIC_READ, 0, None, win32file.OPEN_EXISTING, win32file.FILE_ATTRIBUTE_NORMAL, None)
		return int(vHandle) == win32file.INVALID_HANDLE_VALUE
	except:
		return True
	finally:
		try:
			win32file.CloseHandle(vHandle)
		except:
			pass
		
>>> fn = r'D:\temp\csdn\t.py'
>>> is_used(fn)
False
>>> fp = open(fn, 'a+')
>>> is_used(fn)
True
>>> fp.close()
>>> is_used(fn)
False

簡單驗證了一下,函數(shù)is_used()基本可用。

到此這篇關(guān)于使用Python判斷一個文件是否被占用的文章就介紹到這了,更多相關(guān)Python判斷文件被占用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python使用whisper實現(xiàn)語音識別(ASR)的示例代碼

    Python使用whisper實現(xiàn)語音識別(ASR)的示例代碼

    Whisper是OpenAI的一個強大的語音識別庫,支持離線的語音識別,本文主要介紹了Python使用whisper實現(xiàn)語音識別(ASR)的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • 找不到Anaconda prompt終端的原因分析及解決方案

    找不到Anaconda prompt終端的原因分析及解決方案

    因為anaconda還沒有初始化,在安裝anaconda的過程中,有一行是否要添加anaconda到菜單目錄中,由于沒有勾選,導(dǎo)致沒有菜單部分的初始化,故找不到,這篇文章主要介紹了找不到Anaconda prompt終端的原因分析及解決方案,需要的朋友可以參考下
    2025-03-03
  • Django實現(xiàn)自定義路由轉(zhuǎn)換器

    Django實現(xiàn)自定義路由轉(zhuǎn)換器

    有時候上面的內(nèi)置的url轉(zhuǎn)換器并不能滿足我們的需求,因此django給我們提供了一個接口可以讓我們自己定義自己的url轉(zhuǎn)換器,那么如何實現(xiàn),本文就來介紹一下
    2021-05-05
  • Python閉包和裝飾器用法實例詳解

    Python閉包和裝飾器用法實例詳解

    這篇文章主要介紹了Python閉包和裝飾器用法,結(jié)合實例形式詳細分析了Python閉包和裝飾器的相關(guān)概念、原理、使用技巧與相關(guān)操作注意事項,需要的朋友可以參考下
    2019-05-05
  • python代碼實現(xiàn)煙花實例

    python代碼實現(xiàn)煙花實例

    這篇文章主要給大家分享了python煙花詳細的代碼,文章主要以python煙花的代碼展開全文,所以解說會比較少,代碼較多。喜歡的小伙伴可以參考一下,希望對你有所幫助
    2021-12-12
  • django model object序列化實例

    django model object序列化實例

    這篇文章主要介紹了django model object序列化實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • python實現(xiàn)掃描日志關(guān)鍵字的示例

    python實現(xiàn)掃描日志關(guān)鍵字的示例

    下面小編就為大家分享一篇python實現(xiàn)掃描日志關(guān)鍵字的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python調(diào)用.NET庫的方法步驟

    Python調(diào)用.NET庫的方法步驟

    這篇文章主要介紹了Python調(diào)用.NET庫的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Python sqlite3事務(wù)處理方法實例分析

    Python sqlite3事務(wù)處理方法實例分析

    這篇文章主要介紹了Python sqlite3事務(wù)處理方法,結(jié)合具體實例形式分析了Python針對sqlite3事務(wù)處理的操作技巧,代碼中包含詳盡的注釋,需要的朋友可以參考下
    2017-06-06
  • Python實現(xiàn)生成bmp圖像的方法

    Python實現(xiàn)生成bmp圖像的方法

    本文主要介紹了Python實現(xiàn)生成bmp圖像的方法,對大家的學(xué)習(xí)具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06

最新評論

类乌齐县| 古丈县| 祁门县| 襄汾县| 仁寿县| 彝良县| 固安县| 虹口区| 大渡口区| 屏边| 潜山县| 巢湖市| 郎溪县| 浦东新区| 浦东新区| 乌拉特后旗| 东丰县| 图木舒克市| 泰州市| 内丘县| 台北市| 垫江县| 广南县| 桦南县| 朝阳区| 武穴市| 应用必备| 方正县| 法库县| 南江县| 枣强县| 长治县| 大同市| 喀什市| 桦南县| 鄂伦春自治旗| 门源| 承德县| 工布江达县| 墨脱县| 滁州市|