如何在Python 3.8.0中检查文件s1.txt是否处于打开状态?
Python 3 检查文件是否处于打开状态
针对当前代码内的文件对象检查
你用的with语句会自动管理文件资源,代码块结束后文件会自动关闭。如果要判断当前持有的文件对象是否处于打开状态,直接访问文件对象的closed属性即可:
with open("s1.txt", "r") as f: print(f.closed) # 输出 False,此时文件处于打开状态 x = f.read() print(f.closed) # 输出 True,with块结束后文件已自动关闭
检查文件是否被其他进程占用
如果要判断目标文件是否被其他进程打开,可以尝试以独占模式打开文件,失败则说明文件正被占用:
Python 3.10+ 版本写法
def is_file_open(filename): try: # 以独占模式打开文件,被占用时会触发权限错误 with open(filename, "r+", exclusive=True): return False except PermissionError: return True except FileNotFoundError: print("目标文件不存在") return False # 调用示例 print(is_file_open("s1.txt"))
兼容更早Python 3版本的写法
如果你的Python版本低于3.10,用os模块的系统调用实现:
import os def is_file_open(filename): try: # 以读写+独占模式打开文件 fd = os.open(filename, os.O_RDWR | os.O_EXCL) os.close(fd) return False except OSError: # 抛出OSError说明文件被占用或无法打开 return True # 调用示例 print(is_file_open("s1.txt"))
内容的提问来源于stack exchange,提问作者Mohit Narwani
相关产品推荐
相关产品推荐

