从以Python打开的Excel文件中读取

时间:2019-06-26 10:01:30

标签: python file permissions copy

我有一个脚本,每隔几个小时就会从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

1 个答案:

答案 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