python pandas to 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" се интерпретира от Windows като C:BTstack_test3.xlsx - person 7stud; 12.09.2013
comment
@7stud Сигурен съм, че сте прав, но в Python е често срещана грешка за пътеките на файлове или да не се използват наклонени черти в стил unix, или да не се избягват обратни наклонени черти, по-четливо и по-малко податливо на грешки е използването на префикса r. Истинският въпрос е дали това решава проблема, така че ще попитам OP - person EdChum; 12.09.2013
comment
Дори това да не реши проблема на OP, може да поправи други хора, намиращи този въпрос в 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, но току-що опитах да_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