You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSV文件读取遇锁定问题:如何判断读取操作是否成功?

文件被锁定时的重试读取方案

读写CSV文件时,常会碰到这个错误:The process cannot access the file because another process has locked a portion of the file。你想让代码持续重试直到读写成功,写了循环读取的草稿,但不知道怎么判断读取是否成功,还问能不能通过判断FILE是否为列表来验证——答案是不行,得换个方式。

为什么不能靠判断列表?

当文件被其他进程锁定时,io.open()或者File.read()会直接抛出异常(比如Windows下的PermissionError,跨平台的OSError),根本走不到FILE = File.read().splitlines()这一步,自然没法通过FILE的类型来判断成功与否。正确的做法是捕获异常来识别读取失败。

优化后的可用代码

import time
import io

timeout = time.time() + 120  # 设置120秒超时
syncresult = "success"
FILE = []

while True:
    time.sleep(0.5)  # 每次重试前等待500毫秒
    # 先检查是否超时
    if time.time() > timeout:
        syncresult = "timeout"
        break
    
    try:
        # 尝试读取文件
        with io.open(SlogFilePath, "r", encoding="utf-16(LE)") as File:
            FILE = File.read().splitlines()
        # 能走到这里说明读取成功,直接跳出循环
        break
    except (PermissionError, OSError) as e:
        # 捕获文件锁定或无法访问的异常,继续重试
        print(f"读取失败,重试中:{e}")
        continue

OUT = FILE

核心要点

  • 异常捕获逻辑:专门捕获文件被锁定、无权限访问这类异常,以此判断读取失败,继续循环。
  • 循环终止条件:要么读取成功跳出,要么超时后标记结果退出。
  • 变量规范:别用bool这种Python关键字当变量名,容易出语法问题。

内容的提问来源于stack exchange,提问作者Gerhard_P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 03:10:32