为什么设置mode ='a'时pd.ExcelWriter无法创建新文件(如果不存在)

时间:2019-04-28 06:35:50

标签: python-3.x file io pandas.excelwriter

  

我从Python - Files I/O mode='a'中学到了

     

打开一个文件进行追加。如果文件存在,则文件指针位于文件的末尾。也就是说,文件处于附加模式。如果该文件不存在,它将创建一个新文件进行写入。

那么在哪里可以找到关于为什么pd.ExcelWriter( mode ='a )无法创建文件(如果文件不存在)的解释呢?

如果pd.ExcelWriter('path+filename', mode='a')未创建新文件。还有其他更好的方法吗? 我能找到的唯一方法是

if os.path.exists(filename):
    with pd.ExcelWriter(filename, mode='a') as writer:
        "blabla"
else:
    with pd.ExcelWriter(filename, mode='w') as writer:
        "blabla"

1 个答案:

答案 0 :(得分:0)

.xlsx文件是具有特定预定结构的zip文件。将任何内容附加到现有.xslx文件中没有任何意义。 Excel要么忽略您添加的内容,要么根本拒绝打开文件。

如果要将新的工作表添加到现有的.xlsx文件中,则必须使用openpyxl之类的文件来读取文件并自行修改其内部结构。

使用模式open()调用"a"是针对文本文件和直接面向记录的二进制文件,在这种情况下,将字节简单地添加到末尾是有意义的。更复杂的文件结构是应用程序的范围,而不是文件系统。