Python - 无法找到指定的文件&文件操作权限被拒绝

时间:2018-04-18 20:18:21

标签: python excel openpyxl

您好我正在检查excel文件是否被修改,如果它基本上保存为其他东西并打开它。所以它第一次工作,但是第二次修改文件时,我收到错误:系统找不到指定的文件:' C:\ example.xlsx'

有时它也会抛出:权限被拒绝:' C:\ Todolist2.xlsx'

请帮忙。新手在这里。谢谢

import time, os.path, os, openpyxl
from openpyxl import Workbook

currentFD = os.stat("C:\\example.xlsx")

while True:

    modDate = os.stat("C:\\example.xlsx")

    if (modDate > currentFD):
        print('yes it does')
        wb=openpyxl.load_workbook("C:\\example.xlsx")
        wb.save("C:\\Todolist2.xlsx")
        os.startfile("C:\\Todolist2.xlsx")

        currentFD = modDate

1 个答案:

答案 0 :(得分:0)

你似乎有两个不同的问题,但它们可能是相关的。

由于您在C:\Todolist2.xlsx上给出了Permission Denied错误的回溯,让我们看一下。

在Windows上,许多程序在打开文件时会锁定它。对于“应用程序”程序(如Excel和记事本)尤其如此。如果一个程序锁定了文件,则尝试打开该文件以覆盖它的任何其他程序将收到权限错误。

这正是您所看到的:第一次,您的代码覆盖Todolist2.xslx,然后使用startfile告诉Excel(或某些已注册Excel文件的应用程序)打开它,哪个有效。然后它尝试覆盖同一个文件,Excel可能仍然锁定并打开,但失败了。

根据您实际尝试在此处执行的操作,有一些可能的解决方法:

  • Todolist2.xlsx复制到临时文件,然后暂时启动。
  • 创建新文件Todolist2.xlsxTodolist2-1.xlsx等,并继续打开它们。
  • 使用COM自动化或GUI脚本框架(如autogui)使Excel打开文件的副本,而不是打开文件本身。
  • 使用上述任一方法使Excel在覆盖文件并启动文件之前关闭文件。
  • 启动一个新的Excel实例以使用subprocess.Popen打开该文件,这样您就可以将其删除并启动一个新文件。
  • 重写整个代码以使用Excel COM自动化构建电子表格,而不是构建要传递给它的文件。