[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']
//
//
(本頁面已被瀏覽過 876 次)