当pandas框架写入xlsx文件时出现权限错误

imzjd6km  于 11个月前  发布在  其他
关注(0)|答案(6)|浏览(120)

我得到这个错误,而我想保持在Excel文件名为pandas_simple.xlsx我的框架
下面是我的错误:


的数据
这是我的代码:

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()

字符串
有没有人可以在这里分享一些想法给我?

kpbpu008

kpbpu0081#

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

dsekswqp

dsekswqp2#

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

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

字符串
收件人:

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


完整的路径,你不会有问题。

9rbhqvlz

9rbhqvlz3#

pandas.DataFrame.to_excel的文档中说第一个参数可以是一个字符串,表示文件路径。

df.to_excel('pandas_simple.xlsx')

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

llycmphe

llycmphe4#

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

zu0ti5jz

zu0ti5jz5#

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

尝试关闭在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()

字符串

k10s72fa

k10s72fa6#

当我通过双击(在Windows 11系统上)启动.py文件时,我确实遇到了同样的问题。
建议的原因不适用:我试图写入的文件不存在。因此at在其他任何地方都没有打开。是的,我在相应的文件夹中有写入权限。双击调用python3以启动.py文件中的代码。
我注意到以下情况:
当我像这样在终端的命令行中启动代码时,问题就解决了:python3 xyz.py
当我创建一个包含行'python3 xyz.py'的批处理文件(.bat)时,这个问题也消失了。
因此,我的解决方法是创建这样一个批处理文件,这样我就可以通过双击来启动这个批处理文件。
问题解决了,但如果能知道为什么一个以双击开始的代码会有这样的行为,那就太好了。

相关问题