我有一个脚本,每隔几个小时就会从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
答案 0 :(得分:0)
我只是将您的代码写为
fh_in = open(fileName, 'rb')
fh_out = open(tempFileName, 'wb')
f_in_content = fh_in.read()
fh_out.write(f_in_content)
查看错误在哪里发生。在我的情况下,这不是由于打开了输入文件,而是由于输出文件。
读取文件效果很好,但是当我尝试将写入目标文件时,它失败并显示为PermissionError
。