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

MacOS Ventura下Pandas Dataframe转CSV遇只读文件系统错误

问题:Python保存CSV时触发只读文件系统错误

相关代码

CSV保存逻辑

# Converting the dataframe to a csv file
relative_path = os.path.dirname(__file__)
df.to_csv(relative_path+"/"+args.cleaned, index=False)

命令行参数定义

import argparse
parser = argparse.ArgumentParser(description="Run data cleaning.")
parser.add_argument('--cleaned', type=str, default='final.csv', help='Cleaned csv output')

触发的错误

OSError: [Errno 30] Read-only file system: '/final.csv'

已尝试的排查操作

  • 谷歌、StackOverflow搜索该错误信息
  • 使用chmod命令为工作目录添加读写权限
  • 查阅StackOverflow上目录相关的解决方案,但均不适用于当前CSV文件写入场景

额外背景

该代码此前在同一设备的同一工作目录稳定运行数月,近期重装Anaconda和Python后出现此问题,已查阅几乎所有相关StackOverflow帖子,未找到针对性解决方案,寻求可行建议。

解决方案建议

1. 检查相对路径的有效性

重装环境后,__file__的获取逻辑可能因运行方式(如IDE直接运行、交互式执行)改变,导致relative_path为空,最终尝试写入根目录/(只读)。先打印路径确认:

print(f"当前relative_path值: {relative_path}")

如果输出为空,改用当前工作目录获取方式:

import os
# 替换原relative_path赋值
relative_path = os.getcwd()
df.to_csv(os.path.join(relative_path, args.cleaned), index=False)

2. 改用安全的路径拼接方式

直接用+拼接路径容易出现空路径、分隔符错误,改用os.path.join自动处理路径问题:

df.to_csv(os.path.join(relative_path, args.cleaned), index=False)

3. 确认目录权限与归属

重装环境后用户权限可能变化,除chmod外,检查目录所有者:

ls -ld /你的工作目录路径

若所有者非当前用户,修改归属:

sudo chown 你的用户名:用户组 /你的工作目录路径

4. 绝对路径测试排查

直接指定有读写权限的绝对路径测试,确认是否为路径拼接问题:

df.to_csv("/home/你的用户名/工作目录/final.csv", index=False)

若能成功写入,说明问题出在相对路径获取环节。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 03:12:21