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

如何覆盖Polars读取的文件?读取拼接后写入遇权限拒绝

解决Polars覆盖写入IPC文件的权限拒绝问题

错误原因

执行pl.read_ipc(path)后,目标文件会被系统锁定(处于打开状态),此时直接调用write_ipc写入同一路径,会因文件资源被占用触发权限拒绝错误,这在Windows系统中尤为常见。

解决方案

方案1:内存中转(基础场景)

先将文件读取到内存,确保文件句柄释放后再写入原路径:

import polars as pl

# 读取文件到内存,文件句柄自动释放
df = pl.read_ipc(path)
# 拼接新数据(new_data为你的新数据集)
combined_df = pl.concat([df, new_data])
# 覆盖写入原文件
combined_df.write_ipc(path)

方案2:临时文件中转(兼容多系统,更稳妥)

通过临时文件避免直接操作被锁定的原文件,适用于Windows等对文件锁定严格的系统:

import polars as pl
import os
import tempfile

# 读取原文件
df = pl.read_ipc(path)
# 拼接新数据
combined_df = pl.concat([df, new_data])

# 创建临时IPC文件
with tempfile.NamedTemporaryFile(mode='wb', suffix='.ipc', delete=False) as tmp:
    combined_df.write_ipc(tmp.name)

# 替换原文件
os.remove(path)
os.rename(tmp.name, path)

额外注意事项

  • 确保运行程序的用户对目标文件路径拥有读写权限,若文件在系统保护目录下,需以管理员权限启动程序。
  • 拼接数据时注意数据集的schema一致性,避免pl.concat报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:34:54