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

运行PatentsView数据下载代码时遇PermissionError[WinError32]求助

运行PatentsView数据下载脚本时的PermissionError修复方案

问题描述

运行PatentsView数据下载脚本时出现如下报错:

Traceback (most recent call last):
  File "...\patentsview_data_download-master\221113\patentsview_download_221113.py", line 285, in <module>
    download_and_parse_tsv(url)                                          
  File "...\patentsview_data_download-master\221113\patentsview_download_221113.py", line 232, in download_and_parse_tsv
    write_to_db(tsv_name, tablename)                                  
  File "...\patentsview_data_download-master\221113\patentsview_download_221113.py", line 195, in write_to_db
    os.remove(os.getcwd()+'/'+cleaned_file)                       
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: '...\patentsview_data_download-master\\221113/g_applicant_not_disambiguated.tsv2'

报错原因

该错误是因为脚本尝试删除g_applicant_not_disambiguated.tsv2文件时,文件正被其他进程(或当前脚本自身未关闭的文件句柄)占用,导致系统不允许删除操作。

修复步骤

  • 确保文件句柄正确关闭:在write_to_db函数中,所有操作cleaned_file的代码必须保证文件被正确关闭。优先使用with语句处理文件操作,它会自动在代码块结束后关闭文件句柄,示例:

    # 替换原有的文件打开方式
    with open(os.path.join(os.getcwd(), cleaned_file), 'r') as f:
        # 这里写读取/处理文件的逻辑
    

    如果原代码用了open()后未调用close(),必须补充f.close()语句,且确保在删除文件前执行。

  • 终止占用文件的进程:打开Windows任务管理器,查找可能占用该文件的进程(比如Python.exe、打开该文件的文本编辑器、数据库客户端等),结束对应进程后重新运行脚本。

  • 调整文件删除时机:检查write_to_db函数中os.remove的位置,确保它在所有依赖该文件的操作(比如数据库写入、数据解析)完全完成后执行,尤其是要确认数据库连接已经提交并关闭。

  • 修正路径拼接方式:原代码中os.getcwd()+'/'+cleaned_file的写法在Windows下会生成混合分隔符的路径,改用os.path.join(os.getcwd(), cleaned_file)生成标准路径,避免路径格式问题引发的文件操作异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:25:36