欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python用access判斷文件是否被占用的實(shí)例方法

 更新時(shí)間:2020年12月17日 08:31:32   作者:小妮淺淺  
在本篇文章里小編給大家整理的是一篇關(guān)于Python用access判斷文件是否被占用的實(shí)例方法,有興趣的朋友們可以學(xué)習(xí)下。

有的小伙伴想知道用access()函數(shù)可以判斷一個(gè)文件被占用嗎?理論上來(lái)說(shuō)是不行的,access()返回的是文件的讀寫屬性。為了讓小伙伴們信服,小編進(jìn)行了簡(jiǎn)單的測(cè)試。

>>> import os
>>> fn = r'D:\temp\csdn\t.py' # 測(cè)試用的文件
>>> 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+') # 以追加寫的方式打開(kāi)文件
>>> 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()

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

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

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

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

那么,究竟應(yīng)該如何用Python判斷一個(gè)文件是否被占用呢?這個(gè)問(wèn)題還是要回歸到操作系統(tǒng)層面來(lái)解決,也就是依賴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

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

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

相關(guān)文章

  • Python表格處理模塊xlrd在Anaconda中的安裝方法

    Python表格處理模塊xlrd在Anaconda中的安裝方法

    本文介紹在Anaconda環(huán)境下,安裝Python讀取.xls格式表格文件的庫(kù)xlrd的方法,xlrd是一個(gè)用于讀取Excel文件的Python庫(kù),本文介紹了xlrd庫(kù)的一些主要特點(diǎn)和功能,感興趣的朋友一起看看吧
    2024-04-04
  • Python中kivy庫(kù)的使用教程詳解

    Python中kivy庫(kù)的使用教程詳解

    Kivy是一個(gè)開(kāi)源Python框架,用于構(gòu)建具有創(chuàng)意和多點(diǎn)觸控功能的用戶界面(UI)應(yīng)用程序,本文主要為大家介紹了一下Kivy的具體使用,需要的可以參考下
    2024-01-01
  • Python Pillow 圖像處理庫(kù)詳解(常用Pillow函數(shù)及其參數(shù))

    Python Pillow 圖像處理庫(kù)詳解(常用Pillow函數(shù)及其參數(shù))

    Pillow,原名PIL(Python Imaging Library),是一個(gè)功能強(qiáng)大的Python圖像處理庫(kù),支持多種格式,提供豐富的圖像操作功能,如旋轉(zhuǎn)、縮放、顏色轉(zhuǎn)換等,以及易于使用的API,Pillow支持廣泛的圖像文件格式,并提供圖像過(guò)濾、繪制等功能
    2024-09-09
  • Python定時(shí)任務(wù)實(shí)現(xiàn)方案

    Python定時(shí)任務(wù)實(shí)現(xiàn)方案

    這篇文章主要介紹了Python定時(shí)任務(wù)實(shí)現(xiàn)的方案,定時(shí)執(zhí)行的任務(wù),可以是一段bash命令,也可以是一個(gè)腳本文件。通常用于我們需要在特定時(shí)刻做事情,下面來(lái)看看文章詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • 解析numpy中的iscomplex方法及實(shí)際應(yīng)用

    解析numpy中的iscomplex方法及實(shí)際應(yīng)用

    NumPy 的 iscomplex 方法為檢查數(shù)組中的元素是否為復(fù)數(shù)提供了一種高效且易于使用的接口,本文介紹了 iscomplex 方法的基本概念、使用方法以及它在解決實(shí)際問(wèn)題中的應(yīng)用,需要的朋友可以參考下
    2024-06-06
  • 基于Python實(shí)現(xiàn)地標(biāo)景點(diǎn)識(shí)別功能

    基于Python實(shí)現(xiàn)地標(biāo)景點(diǎn)識(shí)別功能

    地標(biāo)景點(diǎn)識(shí)別是一種基于計(jì)算機(jī)視覺(jué)技術(shù)的應(yīng)用,旨在通過(guò)對(duì)圖像進(jìn)行分析和處理,自動(dòng)識(shí)別出圖片中的地標(biāo)景點(diǎn),本文將介紹地標(biāo)景點(diǎn)識(shí)別的背景和原理,并使用Python編程語(yǔ)言來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的地標(biāo)景點(diǎn)識(shí)別系統(tǒng),感興趣的朋友可以參考下
    2024-01-01
  • yolov5中head修改為decouple?head詳解

    yolov5中head修改為decouple?head詳解

    現(xiàn)成的YOLOv5代碼真的很香,不管口碑怎么樣,我用著反正是挺爽的,下面這篇文章主要給大家介紹了關(guān)于yolov5中head修改為decouple?head的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Python 機(jī)器學(xué)習(xí)第一章環(huán)境配置圖解流程

    Python 機(jī)器學(xué)習(xí)第一章環(huán)境配置圖解流程

    機(jī)器學(xué)習(xí)是一類算法的總稱,這些算法企圖從大量歷史數(shù)據(jù)中挖掘出其中隱含的規(guī)律,并用于預(yù)測(cè)或者分類,更具體的說(shuō),機(jī)器學(xué)習(xí)可以看作是尋找一個(gè)函數(shù),輸入是樣本數(shù)據(jù),輸出是期望的結(jié)果,只是這個(gè)函數(shù)過(guò)于復(fù)雜,以至于不太方便形式化表達(dá)
    2021-11-11
  • Python實(shí)例詳解遞歸算法

    Python實(shí)例詳解遞歸算法

    遞歸(英語(yǔ):Recursion),又譯為遞回,在數(shù)學(xué)與計(jì)算機(jī)科學(xué)中,是指在函數(shù)的定義中使用函數(shù)自身的方法。遞歸一詞還較常用于描述以自相似方法重復(fù)事物的過(guò)程。本文將詳細(xì)為大家介紹Python中的遞歸算法,需要的可以參考一下
    2022-03-03
  • Python自動(dòng)化運(yùn)維和部署項(xiàng)目工具Fabric使用實(shí)例

    Python自動(dòng)化運(yùn)維和部署項(xiàng)目工具Fabric使用實(shí)例

    Fabric是一個(gè)Python庫(kù),只要目標(biāo)機(jī)器支持ssh訪問(wèn),就可以借助fabric來(lái)進(jìn)行遠(yuǎn)程操作(如在host1上對(duì)host2遠(yuǎn)程運(yùn)行shell命令),顯然,由于fabric是個(gè)Python package,故其它Python package都可以被import到fabric特有的fabfile.py腳本中
    2016-09-09

最新評(píng)論