Python: 如何判斷遠端伺服器上Excel檔案是否被人開啟
阿新 • • 發佈:2020-07-12
最近工作中需要去判斷遠端伺服器上的某個Excel檔案是否被開啟,如果被人開啟,則等待,如果沒人開啟使用,則去填寫資料進Excel檔案。
開始想的很簡單,和其他語言一樣,比如C#,開啟檔案,如果報錯說明被佔用,結果發現,Excel檔案被其他人開啟的情況下,python裡面用可寫'w'的方式開啟檔案,實際上並沒有報錯,執行完成也沒任何錯誤,只是最後看Excel檔案裡面,發現實際要寫入的東西並沒被寫入。
然後在網上找了一些方法,比如用openpyxl,pywin32等等,發現都做不到真正去判斷Excel檔案是否被其他人開啟了。
後來想到一個解決方法:判斷是否有“~$”開頭的同名檔案在同級目錄下存在:比如test.xlsx被開啟後會存在~$test.xlsx檔案,如果沒被開啟則沒有該檔案。
Excel檔案(具體來說應該是MS office檔案)每次被開啟後其實是會建立一個隱藏的"~$"開頭的系統隱藏檔案,比如開啟test.xlsx後同級目錄下其實是會有~$test.xlsx檔案:
因為~$test.xlsx是系統隱藏檔案,如果要看到的話,需要顯示所有系統隱藏檔案資訊,方法如下:
- 點選任一資料夾左上角的“檔案”
- 點選“選項”開啟“資料夾選項”
- 點選“檢視”條目,勾選“顯示隱藏的檔案、資料夾和驅動器”,然後去掉“隱藏受保護的作業系統檔案(推薦)”的勾選
這樣就可以看到~$test.xlsx這個隱藏檔案了。
知道了這個方法後,要去判斷Excel檔案是否被開啟就很容易了,只需要判斷~$test.xlsx檔案是否存在即可,如果存在則認為test.xlsx檔案被人開啟,等待關閉,否則則認為該檔案沒人開啟,直接編輯即可。
對於本地和遠端伺服器上的Excel檔案否是被開啟都可以用該方法。