У меня есть скрипт, который извлекает данные из файлов Excel каждые несколько часов. Однако, если один из этих файлов Excel открыт, я все же хочу иметь возможность читать из него.
В python (openpyxl) я получаю ошибку прав доступа при попытке сделать это.
Ниже я попробовал ниже. Я думал, что смогу поймать исключение и создать временную версию файла, из которого я смогу прочитать.
try:
read_from = load_workbook(fileName)
except:
tempFileName = "directory\\temp " + fileName + ".xlsx"
open(tempFileName, 'wb').write(open(fileName, 'rb').read())
read_from = load_workbook(tempFileName)
Однако я получаю следующую ошибку даже с этим:
----> 6 open(tempFileName, 'wb').write(open(fileName, 'rb').read())
7 read_from = load_workbook(tempFileName)
8 read_sheet = read_from.active
PermissionError: [Errno 13] Permission denied: 'directory\\testfile.xlsx'
РЕДАКТИРОВАТЬ: у меня есть текущий обходной путь, как показано ниже
создание временной копии файла с помощью командной строки, а затем удаление временного файла, похоже, работает нормально.
try:
read_from = load_workbook(fileName)
delTempFileFlag = False
except:
print("file: ",item,"is open, so cannot be accessed")
tempFileName = "directory\\temp " + fileName + ".xlsx"
command = "xcopy \"" + fileName + "\" " + "\"" + tempFileName + "*\""
os.system(command)
print("Temporary copy of file created to work with")
read_from = load_workbook(tempFileName)
delTempFileFlag = True
...
...
if delTempFileFlag == True:
os.remove(tempFileName)
delTempFileFlag = False