介绍
这篇文章将为大家详细讲解有关利用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怎么判断文件是否被占用