Pandas DataFrame.to_csv 引发 IOError:没有这样的文件或目录

新手上路,请多包涵

Hi: I am trying to use the Pandas DataFrame.to_csv method to save a dataframe to a csv file:

 filename = './dir/name.csv'

df.to_csv(filename)

但是我收到错误:

 IOError: [Errno 2] No such file or directory: './dir/name.csv'

如果文件不存在, to_csv 方法不应该能够创建文件吗?这就是我打算让它做的。

原文由 LoLa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

to_csv 如果文件不存在,它会创建文件,但它不会创建不存在的目录。确保首先创建了您尝试在其中保存文件的子目录。

我经常在工作中做这样的事情:

 import os

outname = 'name.csv'

outdir = './dir'
if not os.path.exists(outdir):
    os.mkdir(outdir)

fullname = os.path.join(outdir, outname)

df.to_csv(fullname)

如果您需要经常这样做,这可以很容易地包含在一个函数中。

原文由 qRTPCR 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是使用优秀的标准库 pathlib 模块执行此操作的另一种方法,通常可以使事情变得更整洁。

如其他地方所述, to_csv 将创建 文件(如果不存在),但 不会 在文件路径中创建任何不存在的目录,因此您需要首先确保这些目录存在。

 from pathlib import Path

output_file = 'my_file.csv'
output_dir = Path('long_path/to/my_dir')

output_dir.mkdir(parents=True, exist_ok=True)

df.to_csv(output_dir / output_file)  # can join path elements with / operator

设置 parents=True 也将创建任何必要的父目录,而 exist_ok=True 意味着如果目录已经存在它不会引发错误,因此您不必单独明确检查。

原文由 Tim 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题