Почему после открытия и закрытия книги с файлом xlsx с помощью openpyxl с read_only=True появляется дескриптор файла?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему после открытия и закрытия книги с файлом xlsx с помощью openpyxl с read_only=True появляется дескриптор файла?

Сообщение Anonymous »

Могу ли я получить вашу помощь в устранении проблемы с дескриптором файла в пакете Python openpyxl версии 3.0.7? Если для параметра load_workbook read_only установлено значение False, этого не происходит. Это происходит только в том случае, если установлено значение True. Если вы вызовете эти функции load_workbook и закроете несколько раз (одного и того же файла), это в конечном итоге произойдет. Я считаю, что сузил исходный код, открывая дескриптор файла. Проблема в том, что его не удаляют. Исключение выдается при вызове Shutil.move(source_file, target_file) после многократного открытия/закрытия одной и той же книги. Я постараюсь избежать этого, открывая и закрывая книгу один раз, но мне нужно будет построить структуру данных для хранения всего, поскольку в книге 23 листа. Но это похоже на проблему, несмотря ни на что. Если я установлю read_only=False, производительность будет ужасной! Таким образом, работа займет примерно на час больше.
import openpyxl # openpyxl 3.0.7
# repeat open/close multiple times
wb_source = openpyxl.load_workbook(file_path, read_only=True)
ws_source = wb_source[worksheet_name]
for row in ws_source.rows:
for cell in # cells
# ...
wb_source.close()
shutil.move(file_path, file_path_archive)

Вот исключение:
Traceback (most recent call last):
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\lib\shutil.py", line 566, in move
os.rename(src, real_dst)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\Python\\...file.xlsx' -> 'C:\\Python\\...file.xlsx'

.\venv\Lib\site-packages\openpyxl\reader\excel.py
# Python stdlib imports
from zipfile import ZipFile, ZIP_DEFLATED, BadZipfile
from sys import exc_info
from io import BytesIO
import os.path
import warnings
# ...
if self.read_only:
ws = ReadOnlyWorksheet(self.wb, sheet.name, rel.target, self.shared_strings)
ws.sheet_state = sheet.state
self.wb._sheets.append(ws)
continue
else:
fh = self.archive.open(rel.target)
ws = self.wb.create_sheet(sheet.name)
ws._rels = rels
ws_parser = WorksheetReader(ws, fh, self.shared_strings, self.data_only)
ws_parser.bind_all()

.\venv\Lib\site-packages\openpyxl\packaging\manifest.py
mimetypes = MimeTypes()

C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\Lib\mimetypes.py
class MimeTypes:

def init(files=None):
global suffix_map, types_map, encodings_map, common_types
global inited, _db
inited = True # so that MimeTypes.__init__() doesn't call us again

if files is None or _db is None:
db = MimeTypes()
if _winreg:
db.read_windows_registry()

if files is None:
files = knownfiles
else:
files = knownfiles + list(files)
else:
db = _db

for file in files:
if os.path.isfile(file):
db.read(file) #

Подробнее здесь: https://stackoverflow.com/questions/781 ... kbook-with
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как сделать стиль, скопированный из исходного файла xlsx, таким же, как стиль целевого файла xlsx?
    Гость » » в форуме JAVA
    0 Ответы
    111 Просмотры
    Последнее сообщение Гость
  • Извлечение метаданных/свойств файла книги xlsx в Python 3.6
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • В чем разница между Init-Only и ReadOnly в C# 9?
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Google Assistant Voice Command Only Opens App, не запускает возможности действия приложения из Shortcuts.xml
    Anonymous » » в форуме Android
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Locating certain C program header. How to grep directly or redirect to file listing from gcc -H -fsyntax-only source.c?
    Anonymous » » в форуме Linux
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»