[Python] 原來 glob.glob("*") 不會傳回 Linux 上的隱藏檔…

[Python] 原來 glob.glob("*") 不會傳回 Linux 上的隱藏檔…

今天遇到了怪問題, python 程式明明看到目錄中有某個檔案,

但是用 glob.glob(“*”) 卻看不到它…

 

網路上查了一下,原來 glob() 預設是不會把 Linux 上的隱藏檔 (也就是檔名以 . 開頭的檔案) 列出來…

對程式來說,它不管是不是隱藏檔都可以存取,

但 glob() 卻回傳了沒有檔案的結果,因此造成了問題…

網頁中用的方法是用 “.*” 取代 “*” 就可以列出以 . 開頭的檔案了~

 

舉例來說,假設目錄下有 see1, see2, .hidden1, .hidden2 四個檔案,

那麼 glob(“*”) 就只能看到前兩個非隱藏檔,

glob(“.*”) 則可以把隱藏檔案列出來~

>>> import glob
>>> glob.glob("*")
['see1', 'see2']
>>> glob.glob(".*")
['.hidden1', '.hidden2']

 

當然如果想要全部的檔案連同隱藏檔都列出來,glob(“*”) + glob(“.*”) 是一種方式,

缺點是磁碟目錄多掃了一次…

因此也可以用 os.listdir() 列出所有的檔案(連同隱藏檔),自己再想辦法做檔名比對囉~

>>> import os
>>> os.listdir(".")
['.hidden1', '.hidden2', 'see1', 'see2']

 

 

//
//

(本頁面已被瀏覽過 305 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料