一、先介紹一下os模塊
1
2
3
4
5
6
7
8
9
10
|
import os print (os.getcwd()) # E:\python\test\python_models # 獲取當前的目錄 print (os.listdir( "." )) # ['oop.py', 'python_argparse.py', 'python_click.py', 'python_os.py', 'python_re.py', 'python_requests.py', 'xx.py', '__init__.py'] # 列出指定目錄下的所有文件和文件夾,返回的是一個列表 |
1、拆分路徑的方法介紹
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# 1、拆分路徑的方法介紹 # os.path模塊用來對文件和路徑進程管理,顯示他包含很多拆分路徑的函數,os.path模塊中和拆分路徑相關的函數有 # os.path.split() 返回一個二元組,包含文件的路徑和文件名 # os.path.dirname() 返回文件的路徑 # os.path.basename() 返回文件的文件名 # os.path.splitext() 返回一個不包括文件擴展名的部分和文件擴展名的二元組 # 下面演示一下上面介紹的方法 path = "G:\新建文件夾\瘋狂\永久地址.txt" print (os.path.split(path)) # ('G:\\新建文件夾\\瘋狂', '永久地址.txt') print (os.path.dirname(path)) # G:\新建文件夾\瘋狂 print (os.path.basename(path)) print (os.path.splitext(path)) # ('G:\\新建文件夾\\瘋狂\\永久地址', '.txt') |
2、構建文件路徑的方法介紹
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# 2、構建路徑的方法介紹 # python工程師可以使用os.path模塊方便的拆分路徑,相應的,os.path模塊的也包含了用以構建路徑的函數,其中最常用的是 # os.path.expanduser() 展開用戶的HOME目錄,比如~,~username # os.path.abspath() 得到文件或路徑的絕對路徑 # os.path.join() 根據不同的操作系統平臺,使用不用的路徑分隔符拼接路徑 # 下面演示一下上面介紹的方法 # os.path.expanduser("~mysql") 返回mysql用戶的HOME目錄,我這里是windows平臺,就不演示這個命令了 print (os.path.abspath( "." )) # E:\python\test\python_models print (os.path.abspath( ".." )) # E:\python\test # 相應的有一個方法可以判斷一個路徑是否為絕對路徑 print (os.path.isabs( "." )) # False print (os.path.isabs(os.path.abspath( "." ))) # True print (os.path.join(os.path.abspath( "." ), "test" , "join.text" )) # E:\python\test\python_models\test\join.text # 在python代碼中,可使用__file__這個特殊的變量表示當前代碼所在的源文件,在編寫代碼時,有時候需要導入當前源文件父目錄下的軟件包,因此需要用到 # 這里的路徑函數獲取源文件的父目錄,如下所示 path = os.path.abspath(__file__) print (path) # E:\python\test\python_models\python_os.py print (os.path.dirname(path)) # E:\python\test\python_models print (os.path.pardir) # .. print (os.path.abspath(os.path.join(os.path.dirname(path),os.path.pardir))) # E:\python\test |
3、獲取文件屬性的方法介紹
1
2
3
4
5
6
|
# 3、獲取文件屬性 # os.path模塊也包含了若干函數用來獲取文件的屬性,包括文件的創建時間,修改時間,文件的大小,訪問時間 # os.path.getatime() 返回文件的訪問的時間 # os.path.getmtime() 返回文件的修改的時間 # os.path.getctime() 返回文件的創建時間 # os.path.getsize() 返回文件的大小 |
4、判斷文件的類型
1
2
3
4
5
6
7
8
|
# 4、判斷文件類型 # os.path模塊也提供了若干函數用來判斷路徑是否存愛,以及路徑所指的文件的類型,這些判斷類的函數一般以is開頭,并且返回一個Boolean型的結果 # os.path.exists() 參數path指向的路徑是否存在 # os.path.isfile() 參數path指向的路徑存在,且為文件 # os.path.isdir() 參數path指向的路徑存在,且為目錄 # os.path.islink() 參數path指向的路徑存在,且是一個連接 # os.path.ismount() 參數path指向的路徑存在,且是一個掛載點 |
5、文件和目錄操作
1
2
3
4
5
6
|
# 5、文件和目錄的操作 # os模塊保留文件和目錄的操作函數,包括創建目錄,刪除目錄,刪除文件,重命名文件等 # os.remove() 刪除path路徑所指向的文件 # os.rmdir() 刪除path路徑鎖指向的文件夾,該文件夾必須為空,否則會報失敗 # os.mkdir() 創建一個文件夾 # os.rename() 重命名一個文件或者文件夾 |
6、修改文件屬性和判斷文件屬性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 6、修改文件權限和判斷文件權限 # os模塊也包含了修改文件權限,判斷文件權限的函數,即chmod和access,chmod用來修改文件的權限,access用來判斷文件是否具有相應的權限,在linux中, # 權限分為讀,寫和執行,因此os模塊也提供了三個常量來表示讀,寫,執行,即R_OK,W_OK,X_OK print (os.access(__file__,os.R_OK)) # True print (os.access(__file__,os.W_OK)) # True print (os.access(__file__,os.X_OK)) # True os.chmod(__file__,os.W_OK) |
7、遍歷目錄樹
1
2
3
4
5
6
7
8
9
10
11
12
|
# 7、os.walk遍歷目錄樹 # 前面的例子都是查找某一個目錄下的文件并通過模式匹配去選擇自己需要的文件類型,在實際工作中,更有可能遇到的是查找某個目錄及其子目錄下的所有的文件 # 。例如查找某個目錄及其子目錄下所有的圖片,查找某個目錄及其子目錄下最大的十個文件,對于這類的需求可以使用os模塊walk方法,walk方法遍歷某個目錄及其 # 子目錄,對于每一個目錄,walk返回一個三元組,dirpath,dirnames,filenames,其中dirpath保存的是當前的目錄,dirnames是當前目錄下的子目錄列表,filenames # 是當前目錄下的文件列表 for a,b,c in os.walk( ".." ): print (a,b,c, "walk---------" ) # a為當前的目錄 # b為當前目錄下目錄 # c為當前目錄下的文件 |
二、fnmatch模塊介紹
1
2
3
|
# 8、查找文件 # 使用fnmatch來查找特定的文件,大部分情況下,使用字符串匹配查找特定的文件就能滿足需求,如果需要更加靈活的字符串匹配,可以使用標準庫中的fnmatch庫,這個庫 # 專門用來進行文件名匹配,支持使用通配符進行文件名的匹配 |
1、fnmatch支持的通配符如下
1
2
3
4
5
|
# fnmatch支持的通配符如下 # * 匹配任何數量的字符 # ? 匹配單個字符 # [sep] 匹配sep中的字符 # [!sep] 匹配除了sep以為的任何字符 |
2、fnmatch的常用方法介紹
1
2
3
4
5
|
# fnmatch常用的方法 # fnmatch.fnmatch() 判斷文件名是否符合特定的模式,區分大小寫 # fnmatch.fnmatchcase() 判斷文件名是否符合特定的模塊,不區分大小寫 # fnmatch.filter() 返回輸入列表中,符合特定模式的文件名列表 # fnmatch.translate() 將通配符匹配模式轉換成正則表達式 |
3、fnmatch.fnmatch方法介紹
1
2
3
4
5
6
7
8
9
10
|
for file in os.listdir( "." ): if fnmatch.fnmatch( file , "*.html" ): print ( file ) elif fnmatch.fnmatch( file , "[a-z]??.py" ): print ( file , "hahah" ) elif fnmatch.fnmatch( file , "[!a-o]*" ): print ( file ) else : pass |
4、fnmatch.filter方法介紹
1
2
3
|
# filter方法和fnmatch一樣,只是filer需要傳遞一個文件的列表進行,返回一個符合匹配規則的列表 print (fnmatch. filter (os.listdir( "." ), "*py" )) |
以上就是python os模塊和fnmatch模塊的使用介紹的詳細內容,更多關于python os模塊和fnmatch模塊的資料請關注服務器之家其它相關文章!
原文鏈接:https://www.cnblogs.com/bainianminguo/p/10708306.html