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

2024-10-03 17:24:03 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我正在检查一个excel文件是否被修改,如果它基本上是保存为其他东西,并打开它。因此,它第一次正常工作,但在第二次修改文件时,我遇到了一个错误:系统找不到指定的文件:“C:\示例.xlsx'

有时它还会抛出:Permission denied:'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

Tags: 文件import示例osexample系统错误xlsx
1条回答
网友
1楼 · 发布于 2024-10-03 17:24:03

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

既然您对C:\Todolist2.xlsx上的“权限拒绝”错误进行了回溯,让我们来看看这个问题。在

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

这正是您所看到的:第一次,您的代码重写Todolist2.xslx,然后使用startfile通知Excel(或为Excel文件注册的某些应用程序)打开它,这样就可以了。然后它试图覆盖同一个文件,Excel可能仍然锁定并打开了该文件,但失败了。在

根据您在这里实际尝试的操作,有一些可能的解决方法:

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

相关问题 更多 >