我正在尝试以csv格式(在Windows中)将pandas数据帧存储到临时文件中,但是受到以下命令:
[Errno 13]权限被拒绝:'C:\ Users \ Username \ AppData \ Local \ Temp \ tmpweymbkye'
import tempfile
import pandas
with tempfile.NamedTemporaryFile() as temp:
df.to_csv(temp.name)
其中df是数据帧。我也尝试将临时目录更改为一个我确定我有写权限:
tempfile.tempdir='D:/Username/Temp/'
这给了我同样的错误信息
编辑:
当我将循环更改为:
时,临时文件似乎被锁定以进行编辑with tempfile.NamedTemporaryFile() as temp:
df.to_csv(temp.name + '.csv')
我可以在temp目录中编写该文件,但是在循环结束时不会自动删除它,因为它不再是临时文件。
但是,如果我将代码更改为:
with tempfile.NamedTemporaryFile(suffix='.csv') as temp:
training_data.to_csv(temp.name)
我收到与以前相同的错误消息。该文件在其他任何地方都没有打开。
答案 0 :(得分:1)
检查您的权限,并根据this帖子,您可以通过右键单击并以管理员身份运行,以管理员身份运行您的程序。
我们可以使用to_csv命令以CSV格式导出DataFrame。请注意,默认情况下,下面的代码会将数据保存到当前工作目录中。我们可以通过将foldername和斜杠添加到文件
来将其保存到不同的文件夹中verticalStack.to_csv('foldername/out.csv').
查看您的工作目录以确保CSV正确写出,并且您可以打开它!如果你愿意,可以尝试将其恢复到python中以确保它正确导入。
newOutput = pd.read_csv('out.csv', keep_default_na=False, na_values=[""])
与TemporaryFile()
不同,mkstemp()
的用户负责在完成后删除临时文件。
使用此功能可能会在程序中引入安全漏洞。当你开始使用它返回的文件名做任何事情时,其他人可能会打败你。可以使用mktemp()
轻松替换NamedTemporaryFile()
使用情况,并将其传递给delete=False
参数。
导出到CSV
后,您可以使用temp.close()
关闭文件。
with tempfile.NamedTemporaryFile(delete=False) as temp:
df.to_csv(temp.name + '.csv')
temp.close()
答案 1 :(得分:1)
有时,它会给出该错误,因为有另一个具有相同名称的文件,并且它无权删除先前的文件并将其替换为新文件。
答案 2 :(得分:1)
我遇到了相同的错误消息,并将“ /df.csv”添加到file_path之后,该问题已解决。
df.to_csv('C:/Users/../df.csv', index = False)
答案 3 :(得分:0)
有时,如果您有权读取和写入文件,则需要检查文件路径。特别是当你使用相对路径时。
xxx.to_csv('%s/file.csv'%(file_path), index = False)
答案 4 :(得分:0)
只需提供有效路径和文件名
例如:
final_df.to_csv('D:\Study\Data Science\data sets\MNIST\sample.csv')
答案 5 :(得分:0)
据我所知,当尝试保存已经保存并当前在后台打开的文件时,会弹出此错误。
您可以尝试先关闭这些文件,然后重新运行代码。