Python分享之路徑與檔案 (os.path包, glob包)

chatGPT發表於2023-10-06


os.path包

os.path包主要是處理路徑字串,比如說'/home/vamei/doc/file.txt',提取出有用資訊。

import os.path
path = '/home/vamei/doc/file.txt'
print(os.path.basename(path))    # 查詢路徑中包含的檔名
print(os.path.dirname(path))     # 查詢路徑中包含的目錄
info = os.path.split(path)       # 將路徑分割成檔名和目錄兩個部分,放在一個表中返回
path2 = os.path.join('/', 'home', 'vamei', 'doc', 'file1.txt')  # 使用目錄名和檔名構成一個路徑字串
p_list = [path, path2]
print(os.path.commonprefix(p_list))    # 查詢多個路徑的共同部分

此外,還有下面的方法:

os.path.normpath(path)   # 去除路徑path中的冗餘。比如'/home/vamei/../.'被轉化為'/home'

os.path還可以查詢檔案的相關資訊(metadata)。檔案的相關資訊不儲存在檔案內部,而是由作業系統維護的,關於檔案的一些資訊(比如檔案型別,大小,修改時間)。

import os.path 
path = '/home/vamei/doc/file.txt'
print(os.path.exists(path))    # 查詢檔案是否存在
print(os.path.getsize(path))   # 查詢檔案大小
print(os.path.getatime(path))  # 查詢檔案上一次讀取的時間
print(os.path.getmtime(path))  # 查詢檔案上一次修改的時間
print(os.path.isfile(path))    # 路徑是否指向常規檔案
print(os.path.isdir(path))     # 路徑是否指向目錄檔案

(實際上,這一部份類似於Linux中的ls命令的某些功能)


 


glob包

glob包最常用的方法只有一個, glob.glob()。該方法的功能與Linux中的ls相似(參看Linux檔案管理命令),接受一個Linux式的檔名格式表示式(filename pattern expression),列出所有符合該表示式的檔案(與正規表示式類似),將所有檔名放在一個表中返回。所以glob.glob()是一個查詢目錄下檔案的好方法。


該檔名錶達式的語法與Python自身的正規表示式不同 (你可以同時看一下fnmatch包,它的功能是檢測一個檔名是否符合Linux的檔名格式表示式)。 如下:


Filename Pattern Expression      Python Regular Expression


*                                .*


?                                .


[0-9]                            same


[a-e]                            same


[^mnp]                           same


 

我們可以用該命令找出/home/vamei下的所有檔案:

import glob
print(glob.glob('/home/vamei/*'))



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026630/viewspace-2987000/,如需轉載,請註明出處,否則將追究法律責任。

相關文章