pandas dataframe写入xlsx文件时出现权限错误

问题描述 投票:0回答:6

当我想将数据框保留在名为 pandas_simple.xlsx 的 Excel 文件中时,出现此错误

以下是我的错误:

这是我的代码:

import pandas as pd
df = pd.DataFrame({'Car': [101, 20, 350, 20, 15, 320, 454]})
writer = pd.ExcelWriter('pandas_simple.xlsx')
df.to_excel(writer, sheet_name='Sheet1')
writer.save()
writer.close()

有人可以在这里与我分享一些想法吗?

python pandas xlsxwriter
6个回答
8
投票

如果您的桌面上已打开同一文件的版本(本例中为 pandas_simple.xlsx),也可能会发生此错误。在这种情况下,python 将无权关闭和覆盖同一文件。关闭 Excel 文件并重新运行脚本应该可以解决问题。


7
投票

您尝试写入需要管理权限的文件夹。变化:

writer = pd.ExcelWriter("pandas_simple.xlsx")

至:

writer = pd.ExcelWriter("C:\\...\\pandas_simple.xlsx")

有了完整路径,就不会有问题了。


1
投票

pandas.DataFrame.to_excel的文档说第一个参数可以是表示文件路径的字符串。在你的情况下,我会放弃所有与作家的对话,然后尝试

df.to_excel('pandas_simple.xlsx')

这应该将 pandas_simple.xlsx 写入您当前的工作目录。如果这不起作用,请尝试提供完整路径名(例如 C:\Users\John\pandas_simple.xlsx)。另请确保您不要尝试写入需要管理权限的目录。


1
投票

确保您没有打开要写入的文件。


0
投票

如果路径正确怎么办?!!!

尝试关闭在 Excel 应用程序中打开的 xlsx 文件并再次运行代码,它对我有用,你也会发生同样的情况。

我附上我的代码片段供您参考


    import pandas as pd
    
    file='C:/Users/Aladahalli/Desktop/Book1.xlsx'
    xls = pd.ExcelFile(file)
    
    df = pd.read_excel(xls, sheet_name='Sheet1')
    
    #create a column by name Final and store concatinated columns
    df["Final"] = df["Name"] + "    " + df["Rank/Designation"] + "    " + df["PS"]
    print(df.head())
    
    # Create a Pandas Excel writer using XlsxWriter as the engine.
    writer = pd.ExcelWriter('C:/Users/Aladahalli/Desktop/Final.xlsx', engine='xlsxwriter')
    
    # Convert the dataframe to an XlsxWriter Excel object.
    df.to_excel(writer, sheet_name='Sheet1')
    
    # Close the Pandas Excel writer and output the Excel file.
    writer.save()
    writer.close()


0
投票

当我通过双击启动 .py 文件时(在 Windows 11 系统上),我确实遇到了同样的问题。

建议的原因不适用:我尝试写入的文件不存在。因此,其他地方都没有开放。是的,我确实有相应文件夹的写权限。双击调用python3来启动.py文件中的代码。

我注意到以下几点:

当我在终端的命令行中启动代码时,问题就消失了,如下所示:python3 xyz.py

当我创建包含“python3 xyz.py”行的批处理文件(.bat)时,问题也消失了。

因此,我的解决方法是创建这样一个批处理文件,以便我可以通过双击启动此批处理文件。

问题为我解决了。但如果知道为什么通过双击启动的代码会出现这种行为,那就太好了。

© www.soinside.com 2019 - 2024. All rights reserved.