???前言:
?os 模塊提供了非常豐富的方法用來處理檔案和目錄,是Python基礎必備的,所以我用了6000字詳細講述了絕大部分os模塊提供的方法,方法如下
??方法一、os.makedirs()和os.removedirs()方法
- os.makedirs('目錄1/目錄2/……')可生成多層遞回目錄
- os.removedirs('目錄名稱') 若目錄內容為空,則洗掉,并遞回到上一級目錄,如若也為空,則洗掉,依此類推
??方法二、os.mkdir()和os.rmdir()方法
- os.mkdir(path)生成單級目錄;相當于shell中mkdir dirname
?編輯
- os.rmdir(path)洗掉單級空目錄,若目錄不為空則無法洗掉,報錯;相當于shell中rmdir dirname
引數
- path -- 需要列出的目錄路徑
??方法三、os.listdir(path)方法
os.listdir() 列出指定目錄下的所有檔案和子目錄,包括隱藏檔案,并以串列方式列印,這個串列以字母順序, 它不包括 . 和 .. 即使它在檔案夾中,
引數
- path -- 需要列出的目錄路徑
??方法四、os.remove()方法
os.remove() 方法用于洗掉指定路徑的檔案,如果指定的路徑是一個目錄,將拋出OSError,
語法
remove() 方法語法格式如下:
os.remove(path)
引數
- path -- 要移除的檔案路徑
回傳值
該方法沒有回傳值
??方法五、os.rename()方法
os.rename() 方法用于命名檔案或目錄,從 src 到 dst,如果dst是一個存在的目錄, 將拋出OSError,
語法
rename() 方法語法格式如下:
os.rename(修改前的目錄名, 修改后的目錄名)
回傳值
該方法沒有回傳值
??方法六、os.stat()方法
os.stat()用于獲取檔案/目錄資訊
語法
stat() 方法語法格式如下:
os.stat(path)
引數
- path -- 指定路徑
回傳值
stat 結構:
- st_mode: inode 保護模式
- st_ino: inode 節點號,
- st_dev: inode 駐留的設備,
- st_nlink: inode 的鏈接數,
- st_uid: 所有者的用戶ID,
- st_gid: 所有者的組ID,
- st_size: 普通檔案以位元組為單位的大小;包含等待某些特殊檔案的資料,
- st_atime: 上次訪問的時間,
- st_mtime: 最后一次修改的時間,
- st_ctime: 由作業系統報告的"ctime",在某些系統上(如Unix)是最新的元資料更改的時間,在其它系統上(如Windows)是創建時間(詳細資訊參見平臺的檔案),
栗子
??方法七、os.system()方法
os.system()方法在子shell中執行命令(字串),該方法是通過呼叫標準C函式system()來實作的,并且具有相同的限制,如果命令生成任何輸出,則將其發送到解釋器標準輸出流,無論何時使用此方法,都將打開作業系統的相應 shell 并在其上執行命令,
用法:
os.system(command)
引數:
command: 它是字串型別,告訴執行哪個命令,回傳值:
在Unix上,回傳值是行程的退出狀態,在Windows上,回傳值是系統 shell 程式在運行命令后回傳的值,
栗子
#獲取計算機當前日期的方法 os.system('date') #運行記事本的方法 os.system('notepad') # 呼叫作業系統的計算器 os.system("calc") # 呼叫作業系統的cmd os.system("cmd") # 呼叫遠程桌面連接 os.system('mstsc')
??方法八、os.popen() 方法
概述
os.popen() 方法用于從一個命令打開一個管道,在Unix,Windows中有效
語法
popen() 方法語法格式如下:
os.popen(command[, mode[, bufsize]])
引數
- command -- 使用的命令,
- mode -- 模式權限可以是 'r'(默認) 或 'w',
- bufsize -- 指明了檔案需要的緩沖大小:0意味著無緩沖;1意味著行緩沖;其它正值表示使用引數大小的緩沖(大概值,以位元組為單位),負的bufsize意味著使用系統的默認值,一般來說,對于tty設備,它是行緩沖;對于其它檔案,它是全緩沖,如果沒有改引數,使用系統的默認值,
回傳值
回傳一個檔案描述符號為fd的打開的檔案物件
栗子:
??方法九、os.getcwd()方法
概述
os.getcwd() 方法用于回傳當前作業目錄,
語法
getcwd() 方法語法格式如下:
os.getcwd()
引數
- 無
回傳值
回傳當前行程的作業目錄,
栗子
?? 方法十、os.chdir()方法
概述
os.chdir() 方法用于改變當前作業目錄到指定的路徑,相當于shell下cd
語法
chdir() 方法語法格式如下:
os.chdir(path)
引數
- path -- 要切換到的新路徑,
回傳值
如果允許訪問回傳 True , 否則回傳False,
栗子
??方法十一、os.path模塊的所有使用方法
方法 說明 os.path.abspath(path) 回傳絕對路徑 os.path.basename(path) 回傳檔案名 os.path.commonprefix(list) 回傳list(多個路徑)中,所有path共有的最長的路徑 os.path.dirname(path) 回傳檔案路徑(回傳父目錄) os.path.exists(path) 路徑存在則回傳True,路徑損壞回傳False os.path.lexists 路徑存在則回傳True,路徑損壞也回傳True os.path.expanduser(path) 把path中包含的""和"user"轉換成用戶目錄 os.path.expandvars(path) 根據環境變數的值替換path中包含的"\(name"和"\){name}" os.path.getatime(path) 回傳最近訪問時間(浮點型秒數)(回傳path所指向的檔案或者目錄的最后訪問時間) os.path.getmtime(path) 回傳最近檔案修改時間(回傳path所指向的檔案或者目錄的最后修改時間) os.path.getctime(path) 回傳檔案 path 創建時間 os.path.getsize(path) 回傳檔案大小,如果檔案不存在就回傳錯誤 os.path.isabs(path) 判斷是否為絕對路徑 os.path.isfile(path) 判斷路徑是否為檔案,如果path是一個存在的檔案,回傳True,否則回傳False os.path.isdir(path) 判斷路徑是否為目錄,如果path是一個存在的目錄,則回傳True,否則回傳False os.path.islink(path) 判斷路徑是否為鏈接 os.path.ismount(path) 判斷路徑是否為掛載點 os.path.join(path1[, path2[, ...]]) 把目錄和檔案名合成一個路徑 os.path.normcase(path) 轉換path的大小寫和斜杠 os.path.normpath(path) 規范path字串形式 os.path.realpath(path) 回傳path的真實路徑 os.path.relpath(path[, start]) 從start開始計算相對路徑 os.path.samefile(path1, path2) 判斷目錄或檔案是否相同 os.path.sameopenfile(fp1, fp2) 判斷fp1和fp2是否指向同一檔案 os.path.samestat(stat1, stat2) 判斷stat tuple stat1和stat2是否指向同一個檔案 os.path.split(path) 把路徑分割成 dirname 和 basename,回傳一個元組 os.path.splitdrive(path) 一般用在 windows 下,回傳驅動器名和路徑組成的元組 os.path.splitext(path) 分割路徑中的檔案名與拓展名 os.path.splitunc(path) 把路徑分割為加載點與檔案 os.path.walk(path, visit, arg) 遍歷path,進入每個目錄都呼叫visit函式,visit函式必須有3個引數(arg, dirname, names),dirname表示當前目錄的目錄名,names代表當前目錄下的所有檔案名,args則為walk的第三個引數 os.path.supports_unicode_filenames 設定是否支持unicode路徑名
??方法十二、os.pathsep
os.pathsep的回傳值是輸出用于分割檔案路徑的字串,win下為;號,Linux下為:號
import os print(os.pathsep) 輸出結果: ;
??方法十三、os.name和os.environ
os.name方法
輸出字串指示當前使用平臺,
- win --> ' nt '
- Linux --> ' posix '
當我在Windows系統上執行以下代碼:
import os print(os.name) 輸出結果: nt
os.environ方法
用于獲取系統的環境變數
??方法十四、os.linesep方法
os.linesep方法用于輸出當前平臺使用的行終止符,win下為‘ \t\n ’,Linux下為‘ \n ’
栗子:
print(1,os.linesep,1) 輸出結果: 1 1
??方法十五、os.sep方法
os.sep方法用于輸出分割檔案路徑的字串,win下為‘ \ ’,Linux下為‘ / ’
栗子:
import os print(os.sep) 輸出結果: \
??方法十六、os.access()方法
概述
os.access() 方法使用當前的uid/gid嘗試訪問路徑,大部分操作使用有效的 uid/gid, 因此運行環境可以在 suid/sgid 環境嘗試,
語法
access() 方法語法格式如下:
os.access(path, mode);
引數
path -- 要用來檢測是否有訪問權限的路徑,
mode -- mode為F_OK,測驗存在的路徑,或者它可以是包含R_OK, W_OK和X_OK或者R_OK, W_OK和X_OK其中之一或者更多,
- os.F_OK: 作為access()的mode引數,測驗path是否存在,
- os.R_OK: 包含在access()的mode引數中 , 測驗path是否可讀,
- os.W_OK 包含在access()的mode引數中 , 測驗path是否可寫,
- os.X_OK 包含在access()的mode引數中 ,測驗path是否可執行,
回傳值
如果允許訪問回傳 True , 否則回傳False,
??方法十七、os.open() 方法
概述
os.open() 方法用于打開一個檔案,并且設定需要的打開選項,模式引數mode引數是可選的,默認為 0777,
語法
open() 方法語法格式如下:
os.open(file, flags[, mode]);
引數
file -- 要打開的檔案
flags -- 該引數可以是以下選項,多個使用 "|" 隔開:
- os.O_RDONLY: 以只讀的方式打開
- os.O_WRONLY: 以只寫的方式打開
- os.O_RDWR : 以讀寫的方式打開
- os.O_NONBLOCK: 打開時不阻塞
- os.O_APPEND: 以追加的方式打開
- os.O_CREAT: 創建并打開一個新檔案
- os.O_TRUNC: 打開一個檔案并截斷它的長度為零(必須有寫權限)
- os.O_EXCL: 如果指定的檔案存在,回傳錯誤
- os.O_SHLOCK: 自動獲取共享鎖
- os.O_EXLOCK: 自動獲取獨立鎖
- os.O_DIRECT: 消除或減少快取效果
- os.O_FSYNC : 同步寫入
- os.O_NOFOLLOW: 不追蹤軟鏈接
mode -- 類似chmod(),
回傳值
回傳新打開檔案的描述符,
栗子:
import os, sys # 打開檔案 fd = os.open( "要打開的檔案", os.O_RDWR|os.O_CREAT ) # 寫入字串 os.write(fd, str.encode("要寫入的內容")) # 關閉檔案 os.close( fd )
??方法十八、os.curdir和os.pardir方法
- os.curdir方法
回傳當前目錄:(' . ')
- os.pardir方法
獲取當前目錄的符目錄字串名:(' .. ')
栗子:print(os.curdir) print(os.pardir) 輸出結果: . ..
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/538003.html
標籤:Python
上一篇:Python基礎之網路編程:7、網路并發編程理論與實操(三)
下一篇:Python工具箱系列(十五)
