我的问题是我想使用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#
我正在寻找以下问题的答案:
为什么我的程序将Accountstbl.xlsx读为〜lock.Accountstbl.xlsx
在这种情况下,我如何警告用户,他应该先关闭文件,然后才能完全运行程序。
在这里看到我的代码警告用户使用上面编写的to_handle方法
if(self.has_handle(excelfile)):
print("The file is Opened. Close the file and execute again")
sys.exit()