Мой опыт в том, что sashkello правильно, Excel блокирует файл. Даже OpenOffice/LibreOffice делают это. Они блокируют файл на диске и создают временную версию в качестве рабочей копии. Любая программа, пытающаяся получить доступ к открытому файлу, будет отказана ОС. Причина этого заключается в том, что многие корпорации обрабатывают файлы Excel как базы данных, но пользователи не понимают проблем, связанных с параллелизмом и синхронизацией.
Я нахожусь в linux, и я получаю это поведение (по крайней мере, когда файл находится на share SAMBA). Посмотрите в том же каталоге, что и ваш файл, если файл с именем. ~ Lock. [Filename] # существует, вы не сможете прочитать свой файл из другой программы. Я не уверен, что навязывает эту блокировку, но я подозреваю, что это атрибут NTFS. Обратите внимание, что даже простой cp
или cat
терпит неудачу: cp: error reading ‘CATALOGUE.ods’: Input/output error
UPDATE: Реальный механизм блокировки, как представляется, «oplocks`, концепция, связанная с акциями Windows: http://oreilly.com/openbook/samba/book/ch05_05.html. Если доля управляется Samba в качестве временного решения отключить блокировку некоторых типов файлов, например:
veto oplock files = /*.xlsx/
Если вы не используете доли или NTFS на Linux, то я думаю, вы должны быть в состоянии RW файл, если у вашего сценария есть разрешения на запись. По умолчанию только пользователь, создавший файл, имеет доступ на запись.
WORKAROUND 2: ограничение действует только в том случае, если файл открыт в Excel/LO как записываемый, однако LO, по крайней мере, позволяет вам открыть файл как доступный только для чтения (Перейти в Файл -> Свойства -> Безопасность , установите «Только для чтения», сохраните и снова откройте файл). Я не знаю, будет ли это также делать RO для xlwt.
Это не проблема с python - это функция Excel. Я думаю, что это было задано до ... – sashkello
Мой опыт в том, что сашкелло правильный. Даже OpenOffice/LibreOffice делают это. Они буквально блокируют файл на диске и создают временную версию как рабочую копию. Любая программа, пытающаяся получить доступ к открытому файлу, будет отказана ОС.Причина этого заключается в том, что многие корпорации обрабатывают файлы Excel как базы данных, но пользователи не понимают проблем, связанных с параллелизмом и синхронизацией. – SpliFF
LibreOffice этого не делает, по крайней мере моя версия (на Linux, хотя). Я наблюдаю это только с помощью Excel. – sashkello