Python: 如何判斷遠程服務器上Excel文件是否被人打開


最近工作中需要去判斷遠程服務器上的某個Excel文件是否被打開,如果被人打開,則等待,如果沒人打開使用,則去填寫數據進Excel文件。

開始想的很簡單,和其他語言一樣,比如C#,打開文件,如果報錯說明被占用,結果發現,Excel文件被其他人打開的情況下,python里面用可寫'w'的方式打開文件,實際上並沒有報錯,執行完成也沒任何錯誤,只是最后看Excel文件里面,發現實際要寫入的東西並沒被寫入。

然后在網上找了一些方法,比如用openpyxl,pywin32等等,發現都做不到真正去判斷Excel文件是否被其他人打開了。

后來想到一個解決方法:判斷是否有“~$”開頭的同名文件在同級目錄下存在:比如test.xlsx被打開后會存在~$test.xlsx文件,如果沒被打開則沒有該文件。

Excel文件(具體來說應該是MS office文件)每次被打開后其實是會創建一個隱藏的"~$"開頭的系統隱藏文件,比如打開test.xlsx后同級目錄下其實是會有~$test.xlsx文件:

因為~$test.xlsx是系統隱藏文件,如果要看到的話,需要顯示所有系統隱藏文件信息,方法如下:

  1. 點擊任一文件夾左上角的“文件”
  2. 點擊“選項”打開“文件夾選項”
  3. 點擊“查看”條目,勾選“顯示隱藏的文件、文件夾和驅動器”,然后去掉“隱藏受保護的操作系統文件(推薦)”的勾選

這樣就可以看到~$test.xlsx這個隱藏文件了。

知道了這個方法后,要去判斷Excel文件是否被打開就很容易了,只需要判斷~$test.xlsx文件是否存在即可,如果存在則認為test.xlsx文件被人打開,等待關閉,否則則認為該文件沒人打開,直接編輯即可。

對於本地和遠程服務器上的Excel文件否是被打開都可以用該方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM