利用Python怎么判断文件是否被占用

  介绍

这篇文章将为大家详细讲解有关利用Python怎么判断文件是否被占用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

具体方法如下

在祝辞祝辞import 操作系统   在祝辞祝辞,fn =, " # 39; D: \ temp \ csdn \ t.py& # 39;, #,测试用的文件   在祝辞祝辞,os.access (fn, os.F_OK), #,文件是否存在   真正的   在祝辞祝辞,os.access (fn, os.R_OK), #,文件是否可读   真正的   在祝辞祝辞,os.access (fn, os.W_OK), #,文件是否可写   真正的   在祝辞祝辞,os.access (fn, os.X_OK), #,文件是否可执行   真正的   祝辞祝辞祝辞,fp =,开放(fn, & # 39; a + & # 39;), #,以追加写的方式打开文件   在祝辞祝辞,os.access (fn, os.F_OK), #,文件当然还在   真正的   在祝辞祝辞,os.access (fn, os.R_OK), #,文件依然可读   真正的   在祝辞祝辞,os.access (fn, os.W_OK), #,文件依然可写   真正的   在祝辞祝辞,os.access (fn, os.X_OK), #,文件依然执行   真正的   祝辞祝辞祝辞,fp.close ()

可见,os.access()返回的是文件读写属性,与文件是否被占用没有半毛钱关系。

后来,群里有同学建议说,不妨用试着尝试着打开文件,如果成功,表示文件没有被占用,如果抛出异常,则表示文件被占用。果真如此吗?还是用代码验证一下吧。

在祝辞祝辞,fp1 =,开放(fn, & # 39; a + & # 39;)   祝辞祝辞祝辞,fp2 =,开放(fn, & # 39; a + & # 39;)   在祝辞祝辞,fp1.close ()   在祝辞祝辞,fp2.close ()

结果表明,对同一个文件以写的方式打开多次,系统并没有抛出异常。为什么会这样呢?究其原因,是因为文件被打开和文件被占用是完全两个不同的问题。顺便提醒一下,做上面的测试时,不要使用& # 39;w # 39;的方式,否则文件内容会被清空。

那么,究竟应该如何用Python判断一个文件是否被占用呢?这个问题还是要回归到操作系统层面来解决,也就是依赖win32api模块。

在祝辞祝辞import  win32file   在祝辞祝辞,def  is_used (file_name):   试一试:   时间=vHandle  win32file.CreateFile (file_name, win32file.GENERIC_READ,, 0,,没有,,win32file.OPEN_EXISTING,, win32file.FILE_ATTRIBUTE_NORMAL,,也没有)   return  int (vHandle),==win32file.INVALID_HANDLE_VALUE   除了:   return 真正的   最后:   试一试:   win32file.CloseHandle (vHandle)   除了:   通过      在祝辞祝辞,fn =, " # 39; D: \ temp \ csdn \ t.py& # 39;   在祝辞祝辞,is_used (fn)   假   祝辞祝辞祝辞,fp =,开放(fn, & # 39; a + & # 39;)   在祝辞祝辞,is_used (fn)   真正的   在祝辞祝辞,fp.close ()   在祝辞祝辞,is_used (fn)   假

简单验证了一下,函数is_used()基本可用。

关于利用Python怎么判断文件是否被占用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

利用Python怎么判断文件是否被占用