ошибка python pandas в excel

У меня есть фрейм данных, который я хочу экспортировать в Excel. Я новичок в python и pandas, поэтому мне нужна помощь в этой простой задаче.

df2.to_excel('C:\BT\stack_test3.xlsx')

Сообщение об ошибке:

IOError: [Errno 13] Отказано в доступе: «C:\BT\stack_test3.xlsx»


person jonas    schedule 12.09.2013    source источник
comment
Вы уверены, что ваш код правильный? разве вы не должны использовать что-то вроде этого: df2.to_excel(r'C:\BT\stack_test3.xlsx')? Поскольку я думаю, что ваш путь неверен, и python думает, что вы пишете c:, поскольку ваша обратная косая черта не была экранирована.   -  person EdChum    schedule 12.09.2013
comment
Добавление префикса r решает вашу проблему?   -  person EdChum    schedule 12.09.2013
comment
Нет, к сожалению нет... есть новые идеи?   -  person jonas    schedule 12.09.2013
comment
Вы можете проверить права доступа, а также попробовать другое расширение, такое как .xls, .xlsx использует openpyxl, а .xls расширение использует xlwt, было бы интересно узнать, является ли это проблемой для обеих библиотек.   -  person EdChum    schedule 12.09.2013
comment
Когда я использую .xls, он работает!!!   -  person jonas    schedule 12.09.2013
comment
Хорошо, я обновил свой ответ, к сожалению, я ничего не знаю об этих библиотеках Excel и не смог найти ничего конкретного о разрешениях или других проблемах. Надеюсь, вы все еще можете продолжать свою работу   -  person EdChum    schedule 12.09.2013
comment
Иногда я получаю эту ошибку, когда пытаюсь записать в открытый файл.   -  person DataByDavid    schedule 13.09.2013
comment
Я пробовал писать как в закрытые, так и в открытые файлы, но проблема осталась...   -  person jonas    schedule 13.09.2013


Ответы (5)


Ваш путь неверен, потому что вы не избежали косых черт, он думает, что вы пытаетесь записать в корень диска c: используйте следующее:

df2.to_excel(r'C:\BT\stack_test3.xlsx')

r делает путь необработанной строкой и означает, что вам не нужно экранировать косые черты

Изменить

Кажется, что есть какая-то ошибка с openpyxl при использовании

df2.to_excel(r'C:\BT\stack_test3.xls')

работает, который использует xlwt, я недостаточно знаю об этих пакетах, поэтому это может быть либо проблема с разрешениями для openpyxl, о которой я ничего не смог найти, либо ошибка.

person EdChum    schedule 12.09.2013
comment
@7stud означает `c:`, если вам нравится корень или база диска, Vista и выше могут не разрешать приложениям записывать в корень вашего системного диска, если у него нет достаточных привилегий. - person EdChum; 12.09.2013
comment
Но в документах говорится... В отличие от стандарта C, все нераспознанные управляющие последовательности остаются в строке без изменений, т. е. в строке остается обратная косая черта; и если вы попробуете: s = 'A\B\C' print ord("\\") for ch in s: print ord(ch) вы увидите обратную косую черту в строке. Таким образом, обратная косая черта должна создавать проблему только в том случае, если \B или \s являются распознанной управляющей последовательностью, и ни одна из них не является распознанной управляющей последовательностью. Оператор должен использовать необработанные строки, чтобы избежать любых потенциальных проблем, или использовать косую черту, но я не вижу проблем с этим конкретным путем. - person 7stud; 12.09.2013
comment
Или еще проще, попробуйте: print len('A\B\C'). Сравните с print len('C:\b\a') - person 7stud; 12.09.2013
comment
@7stud У меня нет модуля записи xls, но я только что попробовал префикс to_csv' without the r` и получил ошибку [Errno 22] invalid mode ('w') or filename, добавление префикса r исправляет ее, кстати, расширенный путь без префикса r не расширял среднюю косую черту, поэтому c:\\ Будет отображаться BT\stack_test3.xlsx, если добавление префикса r не решит вашу проблему, я удалю свой ответ. - person EdChum; 12.09.2013
comment
Хорошо, в документах MS говорится, если обратная косая черта предшествует символу, которого нет в таблице, компилятор обрабатывает неопределенный символ как сам символ. Например, \c обрабатывается как c. Таким образом, строка "C:\BT\stack_test3.xlsx" интерпретируется окнами как C:BTstack_test3.xlsx - person 7stud; 12.09.2013
comment
@7stud Я уверен, что вы правы, но в python распространенной ошибкой для путей к файлам является либо не использовать прямую косую черту в стиле unix, либо не экранировать обратную косую черту, использование префикса r более читабельно и менее подвержено ошибкам. Настоящий вопрос в том, решает ли это проблему, поэтому я спрошу у ОП. - person EdChum; 12.09.2013
comment
Даже если это не решит проблему ОП, это может помочь другим людям найти этот вопрос в Google, поэтому, пожалуйста, не удаляйте его. - person Andy Hayden; 12.09.2013
comment
Просто для ясности. Пробовал df2.to_excel(r'C:\BT\stack_test3.xlsx'), но это не решило мою проблему - person jonas; 12.09.2013
comment
@jonas, хорошо... тогда я восстановлю свой ответ, и ты увидишь, решит ли это твою проблему. - person 7stud; 13.09.2013
comment
У меня нет модуля записи xls, но я только что попробовал to_csv' без префикса r` и получил [Errno 22] неверный режим ('w') или ошибку имени файла, добавление префикса r исправляет это,< /i> Какой путь вы использовали? - person 7stud; 13.09.2013
comment
путь: C:\BT\stack_test3.xlsx. Подпапка под C в Windows - person jonas; 13.09.2013

У меня была идентичная проблема. Оказывается, это потому, что я оставил файл Excel открытым, пока пытался писать в него. Видимо, это не нравится. Если он у вас открыт, попробуйте закрыть его.

person OParker    schedule 13.10.2015

Чтобы подтвердить... на случай, если будущие читатели наткнутся на эту страницу... прежде чем усложнять ситуацию, убедитесь, что файл Excel, который вы пытаетесь сохранить, еще не открыт или не является безопасным.

Просто закройте все Excel и попробуйте сохранить его снова.

Это должно сработать.

person M_TRONIC    schedule 19.04.2016

Вы должны записывать на другой диск, например «D:», потому что в Windows Vista или более поздних версиях у вас нет разрешения на запись на «C:\», и ​​у вас нет причин получать разрешение.

person Zagfai    schedule 12.09.2013

После закрытия всех экземпляров excel и запуска кода python работает.

person Gul Saeed khattak    schedule 20.11.2017