警告关闭由其他进程打开的文件(在此处为[excel here])

时间:2018-08-05 11:20:37

标签: python file process xlrd

我的问题是我想使用python处理和使用excel文件中的数据。我希望程序警告用户关闭使用libreoffice程序已打开的excel文件。我已经经历过this related question。有很好的答案,但是我仍然无法解决问题。

我从上面链接的问题中尝试了这个答案:

def has_handle(self,fpath):
for proc in psutil.process_iter():
    try:
        for item in proc.open_files():
            if fpath == item.path:
                return True
    except Exception:
        pass

return False

这非常有效地检查了所有进程中所有打开的文件。但是我在程序中发现,当它试图打开该excel文件时,它正在路径中使用以下文件名,并且我知道这是由于excel文件已经打开而发生的。

  

/home/naseer/PycharmProjects/check/.~lock.Accountstbl.xlsx#

我的实际文件名为

  

Accountstbl.xlsx

因此,所有进程中已经打开的文件与我要打开的文件(即

)都不匹配
  

Accountstbl.xlsx和〜lock.Accountstbl.xlsx#

我正在寻找以下问题的答案:

  1. 为什么我的程序将Accountstbl.xlsx读为〜lock.Accountstbl.xlsx

  2. 在这种情况下,我如何警告用户,他应该先关闭文件,然后才能完全运行程序。

在这里看到我的代码警告用户使用上面编写的to_handle方法

if(self.has_handle(excelfile)):
    print("The file is Opened. Close the file and execute again")
    sys.exit()

0 个答案:

没有答案