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

时间:2017-11-06 18:56:42

标签: python python-2.7 pandas

嗨:我正在尝试使用Pandas DataFrame.to_csv方法将dataframe保存到csv文件中:

filename = './dir/name.csv'

df.to_csv(filename)

但是我收到了错误:

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

to_csv方法是否能够创建文件(如果它不存在)?这就是我打算做的事情。

3 个答案:

答案 0 :(得分:24)

如果文件不存在,

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)

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

答案 1 :(得分:6)

这是使用出色的标准库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表示如果该目录已经存在,则不会引发错误,因此您不必单独进行明确检查。 / p>

答案 2 :(得分:0)

当我不小心在请求保存路径时添加了 file:// 时出现了这个错误。由于搜索将我带到这里,可能对某人也有帮助。