Pandaswww.example.com_csv引发IO错误:DataFrame.to_csv raising IOError: No such file or directory

eagi6jfj  于 2023-01-15  发布在  其他
关注(0)|答案(5)|浏览(116)

Hi:我正在尝试使用PandasDataFrame.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方法不应该创建文件吗?这就是我想要它做的。

eivgtgni

eivgtgni1#

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)

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

kq4fsx7k

kq4fsx7k2#

这里有一个替代方法,使用优秀的标准库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意味着如果目录已经存在,它不会引发错误,因此您不必显式地单独检查。

zwghvu4y

zwghvu4y3#

当我不小心在保存路径的请求处添加了file://时,我遇到了这个错误。既然搜索把我带到了这里,可能对某些人也有帮助。

xyhw6mcr

xyhw6mcr4#

Tim的答案中添加一个,如果你在一个字符串中包含了整个文件路径,你可以使用这个修改后的版本:

from pathlib import Path

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

output_file_path.parent.mkdir(parents=True, exist_ok=True)

df.to_csv(output_file)

通过在Path()中使用文件的完整路径,它将指向该文件,因此我们需要在.mkdir之前调用.parent,以避免创建一个以我们的文件名命名的目录。

ccgok5k5

ccgok5k55#

将"csv"文件从jupyter保存到桌面:

df.to_csv(r'your directory\your file name.csv', index=False)

例如:

df5.to_csv(r'C:\Users\Asus\Desktop\DataSets\compounds\inactive_compounds.csv', index=False)

相关问题