почему pd.ExcelWriter не может создать новый файл, если его не существует при установке mode = 'a' - PullRequest
0 голосов
/ 28 апреля 2019

Я узнал от Python - Файлы ввода / вывода 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 голосов
/ 28 апреля 2019

Файл .xlsx - это zip-файл с определенной заранее определенной структурой. Нет смысла добавлять что-либо в существующий файл .xslx. Либо Excel будет игнорировать добавленные вами файлы, либо вообще откажется открывать файл.

Если вы хотите добавить новую рабочую таблицу в существующий файл .xlsx, вам придется прочитать файл, используя что-то вроде openpyxl, и самостоятельно изменить его внутреннюю структуру.

Вызов open() в режиме "a" предназначен для текстовых файлов и простых двоичных файлов, ориентированных на запись, где имеет смысл просто прикрепить байты к концу. Более сложные файловые структуры - это область приложения, а не файловая система.

...