首页 > 解决方案 > 为什么 pd.ExcelWriter 在设置 mode='a' 时如果不存在则无法创建新文件

问题描述

我从 Python 中学到了 - 文件 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"

标签: python-3.xfileiopandas.excelwriter

解决方案


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

如果要向现有.xlsx文件添加新工作表,则必须使用类似的方法读取文件openpyxl并自己修改其内部结构。

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


推荐阅读