如何用Python判断一个文件是否被占用?非常实用!

LInux 系统编程(笔记一) 文件的使用 文件的写入与创建 open: /* #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); int creat 阅读详情

今天有同学问,用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) # 文件是否可执行
True
>>> fp = open(fn, 'a+') # 以追加写的方式打开文件
>>> 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) # 文件依然执行
True
>>> fp.close()

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

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

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

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

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

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

>>> 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

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

 

c++文件的打开、读写和关闭。缓冲区的使用和控制。 在C++中,文件的打开、读写和关闭通常使用标准库中的文件流对象(如std::ifstream用于输入文件,std::ofstream用于输出文件)来完成。在上面的示例中,我们首先创建了一个std::ofstream对象来写入文件,然后创建了一个std::ifstream对象来读取文件。在大多数情况下,当std::ifstream或std::ofstream对象超出其作用域或被销毁时,它们的析构函数会自动关闭文件。std::ios::ate:打开文件后立即定位到文件末尾。 阅读详情

相关推荐

c++:文件操作1 文件的打开

在程序中,要使用一个文件,先要打开文件后才能读写,读写完后要关闭。创建一个新文件也要先执行打开(open)操作,然后才能往文件中写入数据。C++ 文件流类有相应的成员函数来实现打开、读、写、关闭等文件操作。 C++ 标准类库中有三个类可以用于文件操作,它们统称为文件流类。这三个类是: ifstream:用于从文件中读取数据。 ofstream:用于向文件中写人数据。 fstream:既可用...

m0_37957160的博客 2986

Python 判断文件是否存在,存在则删除

# filepath为文件路径 import os # 判断文件是否存在 if (os.path.exists(filepath)) : #存在,则删除文件 os.remove(filepath)

桃子小迷妹 9240

微信小程序推送微信服务号模板消息

微信小程序中发送微信服务号模板消息,无需用户手动确认订阅,无需绑定开放平台,无需使用UnionId。

qq_20751269的博客 1556

C文件操作

13.3 文件的打开与关闭 文件在进行读写操作之前要先打开,使用完毕要关闭。所谓打开文件,实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它操作。关闭文件则断开指针与文件之间的联系,也就禁止再对该文件进行操作。 在C语言中,文件操作都是由库函数来完成的。在本章内将介绍主要的文件操作函数。 13.3.1 文件的打开(fopen函数) fopen函数用来打开一个文件,其调用的一般形式

Sk123的专栏 1618

[AHK] 自动化获取通达信股票代码:从消息钩子到数据提取

本文详细介绍了如何使用AHK(AutoHotkey)通过Windows消息钩子技术自动化获取通达信股票代码,实现高效数据提取和交易自动化。文章涵盖消息机制原理、AHK脚本开发、性能优化及安全注意事项,为股票交易者提供了一套完整的解决方案。

weixin_42614269的博客 617

OpenEuler22.03 LTS下Zabbix7.0监控系统的容器化部署避坑指南(含Docker-Compose完整配置)

本文详细介绍了在OpenEuler22.03 LTS操作系统上容器化部署Zabbix7.0监控系统的完整流程,包括Docker引擎配置、Docker-Compose编排、网络模式选择及性能调优等关键步骤。针对OpenEuler环境下的特殊问题提供了解决方案,帮助用户高效搭建稳定可靠的监控系统。

python9snake的博客 267

python判断文件是否被占用_如何用Python判断一个文件是否被占用?非常实用!

今天有同学问,用os模块的access()能否判断一个文件是否被占用?直觉上,这是行不通的,因为access()返回的是文件的读写属性。为了确认这一点,我简单测试了一下。>>> import os>>> fn = r'D:\temp\csdn\t.py' # 测试用的文件>>> os.access(fn, os.F_OK) # 文件是否存在Tr...

weixin_39611820的博客 156

MATLAB2021b详细安装教程

1.下载 2.安装 下载安装包后打开iso文件,若是无法打开请用解压软件打开。 ①打开MATLAB_R2021b_win64,双击软件开始安装 ② 一直点击下一步,直到步骤③ ③选择我已有我的许可证的文件密钥,并输入62551-02011-26857-57509-64399-54230-13279-37181-62117-65158-40352-64197-45508-24369-45954-39446-39538-16936-10698-58393-44718-32560-10501-40

惜洛-Jankin的博客 9万+

如何用Python判断一个文件是否被占用?

今天有同学问,用os模块的access()能否判断一个文件是否被占用?直觉上,这是行不通的,因为access()返回的是文件的读写属性。后来,群里有同学建议说,不妨用try尝试着open文件,如果成功,表示文件没有被占用,如果抛出异常,则表示文件被占用。果真如此吗?还是用代码验证一下吧。

Python作业辅导员 - 天元浪子 1万+

深入STM32 USB OTG FS:从官方MSC例程到实战双存储设备移植全记录

本文详细解析了STM32 USB OTG FS在双存储设备开发中的实战应用,从协议栈底层机制到SD卡/SPI Flash同步挂载的实现。通过优化SDIO接口和SPI Flash驱动,结合USB MSC类的关键实现,提供了完整的解决方案和性能优化策略,适合嵌入式开发者参考。

weixin_28366475的博客 368

RAG面试内容整理-7. 多轮问答与上下文拼接策略

在对话式的RAG应用中,多轮问答需要处理上下文相关性问题:用户的提问往往依赖于之前的对话内容。为正确理解用户每一轮的问题,系统需要保留和传递对话历史信息。

不务正业的猿 376

Python判断文件是否存在

  判断文件是否存在主要有两种方法: import os os.path.exists('xxx/xxx/filename') # True/False   以上方法中入参的路径可以是文件路径也可以是文件夹路径,所以可以用于判断文件以及文件夹是否存在。 但是有一种特殊的情况是可能入参传的是一个文件夹路径,但是文件夹路径的上一层有个相同的文件,例如/usr/local/testfile这是一个文件...

KLordy的博客 5万+

C#操作MySQL从入门到精通(3)——新建数据库、新建表

我们要首先新建一个数据库,并且在数据库中新建一系列的表来管理数据库。

qq_34059233的博客 950

python判断文件是否被占用_使用Python判断一个文件是否被占用的方法教程

今天有同学问,用os模块的access()能否判断一个文件是否被占用?直觉上,这是行不通的,因为access()返回的是文件的读写属性。为了确认这一点,我简单测试了一下。>>> import os>>> fn = r"D:empcsdn.py" # 测试用的文件>>> os.access(fn, os.F_OK) # 文件是否存在True&gt...

weixin_34308696的博客 431

AI Agent的知识蒸馏链:多阶段LLM模型优化

随着大语言模型(LLM)规模的不断扩大,如何在保持模型性能的同时提高其部署效率成为关键挑战。本文旨在探讨通过知识蒸馏技术构建多阶段优化链,实现LLM模型的高效压缩和性能优化。研究范围涵盖从基础理论到实际应用的完整知识蒸馏流程,特别关注AI Agent场景下的特殊需求和解决方案。本文首先介绍知识蒸馏的基本概念和背景,然后详细阐述多阶段蒸馏链的核心原理。接着,我们将深入探讨算法实现细节和数学模型,提供完整的代码示例。最后讨论实际应用、工具资源和未来发展方向。

AI大模型应用之禅 350

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

python怎么判断文件是否被占用_如何通过python检查文件是否被占用

一、思路1、通过window的aip函数CreateFile()函数获得文件句柄2、检测在获得句柄的时候是否报错“文件被占用无法打开”3、如果没有报错返回文件句柄,说明文件没有被占用;如果报错说明文件被占用二、需importimport win32file和 from ctypes import windll两个库三、代码#-*- coding: utf-8 -*-from ctypes impo...

weixin_42393127的博客 1448

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

通过python 检查文件是否被占用

一、思路 1、通过window的aip函数CreateFile()函数获得文件句柄 2、检测在获得句柄的时候是否报错“文件被占用无法打开” 3、如果没有报错返回文件句柄,说明文件没有被占用;如果报错说明文件被占用 二、需import import win32file和 from ctypes import windll 两个库 三、代码 #-*- coding: utf-8...

storm_spirit的博客 4994

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

python怎么判断文件是否被占用_Python用access判断文件是否被占用的实例方法

有的小伙伴想知道用access()函数可以判断一个文件被占用吗?理论上来说是不行的,access()返回的是文件的读写属性。为了让小伙伴们信服,小编进行了简单的测试。>>> import os>>> fn = r'D:\temp\csdn\t.py' # 测试用的文件>>> os.access(fn, os.F_OK) # 文件是否存在True...

weixin_29668665的博客 142

python怎么判断一个文件是否存在-python判断文件是否存在的方法

python如何判断文件是否存在通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错。所以最好在做任何操作之前,先判断文件是否存在。python中如何判断文件是否存在?判断文件是否存在可使用os模块, 使用Try语句, 使用pathlib模块。这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块、Try语句、pathlib模块。1.使用os模块os模块中的os...

weixin_37988176的博客 1738

python怎么判断一个文件是否存在-利用Python如何判断一个文件是否存在

通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错。所以最好在做任何操作之前,先判断文件是否存在。这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块、Try语句、pathlib模块。1.使用os模块os模块中的os.path.exists()方法用于检验文件是否存在。判断文件是否存在import osos.path.exists(test_file.txt...

weixin_37988176的博客 824

【Python】检查文件是否处于占用状态

写在前面 如何用 Python 编写代码判断一个文件是否处于占用状态? 思路 调用 win32 api 的 CreateFile 函数来获取文件句柄 判断上一步获取的文件句柄是否有效 若无效,则说明文件正被占用;反之,就没有占用 代码 import win32file def is_file_using(file_name): try: vHandle = win32file.CreateFile(file_name, win32file.GENERIC_READ, 0, N

XavierJ的博客 3165

python怎么判断一个文件是否存在-python判断文件是否存在

在操作文件前,检查文件是否存在也是一个良好的编程习惯。通常来说,有三种常见方式来判断文件夹或文件是否存在,分别是os模块,try语句和pathlib模块。python学习网,大量的免费python视频教程,欢迎在线学习!os模块os模块中的os.path.exists(path)可以检测文件或文件夹是否存在,path为文件/文件夹的名字/绝对路径。返回结果为True/Falseprint os.p...

weixin_37988176的博客 1071

python 判断文件是否存在,是否为空

1. 判断文件是否为空 os.path.getsize()返回文件的字节数,如果为 0,则代表空。 import os file = "/home/abc/a.txt" if not os.path.getsize(file): os.remove(file) 2. 判断文件 / 文件夹是否存在 os.path.exists()方法用于检验文件 / 文件夹是否存在。 import os path = "/home/abc/test_dir" file = "/home/abc/..

给我一点温度 1万+

python os.access_Python用access判断文件是否被占用的实例方法

有的小伙伴想知道用access()函数可以判断一个文件被占用吗?理论上来说是不行的,access()返回的是文件的读写属性。为了让小伙伴们信服,小编进行了简单的测试。>>> import os>>> fn = r'D:\temp\csdn\t.py' # 测试用的文件>>> os.access(fn, os.F_OK) # 文件是否存在True...

weixin_39956612的博客 289
上一篇: 推荐一款最强Python自动化神器!不用写一行代码!
下一篇: Python十大装B语法!你会几种?
pythonlaodi
博客等级 码龄6年 286粉丝 244原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值