Python學(xué)習(xí)之os包使用教程詳解
今天我們來(lái)學(xué)習(xí)一下 python 的內(nèi)置包 —> OS 包。OS 包擁有著普遍的操作系統(tǒng)功能,擁有著各種各樣的函數(shù)來(lái)操作系統(tǒng)的驅(qū)動(dòng)功能。其中最常用的就是對(duì) 路徑 與 文件的操作,比如檢查某個(gè)路徑下是否存在某個(gè)文件,某個(gè)路徑是否存在等。也可以創(chuàng)建、刪除文件等,接下來(lái)我們就詳細(xì)的看一看 OS 中關(guān)于文件的操作功能與用法。
os 模塊
文件與目錄函數(shù)介紹
函數(shù)名 | 參數(shù) | 介紹 | 舉例 | 返回值 |
---|---|---|---|---|
getcwd | 沒(méi)有參數(shù) | 返回當(dāng)前路徑 | os.getcwd() | 字符串 |
listdir | path | 返回指定路徑下所有的文件或文件夾 | os.listdir(‘c://windows’) | 返回一個(gè)列表 |
makedir | path mode | 創(chuàng)建多級(jí)文件夾 | os.makedirs(‘d://pycharm/py’) | 無(wú)返回值 |
removedirs | path | 刪除多級(jí)路徑下的文件夾 | os.removedirs(‘d://pycharm/py’) | 無(wú)返回值 |
rename | oldname、newname | 將文件或文件夾重命名 | os.rename(‘d://pycharm’,‘d://pycharm01’) | 無(wú)返回值 |
rmdir | path | 只能刪除空文件夾 | os.rmdir(‘d://pycharm’) | 無(wú)返回值 |
示例如下:
import os current_path = os.getcwd() print(current_path) new_path = '%s/test01' % current_path os.makedirs(new_path) list_dir = os.listdir(current_path) print(list_dir) # >>> 執(zhí)行結(jié)果如下: # >>> /Users/user_name/PycharmProjects/XXXXX/python_package/animal 這是當(dāng)前Mac系統(tǒng)的絕對(duì)路徑,如果是WIN系統(tǒng)會(huì)顯示磁盤(pán)符 # >>> ['cat', 'dog', 'test_time.py', '__init__.py', 'test.py', 'package_os.py', 'test01'] # >>> 列出來(lái)當(dāng)前路徑下的所有文件,并創(chuàng)建 'test01' 文件夾成功
這里有個(gè)需要注意的地方,如果當(dāng)前路徑下已經(jīng)存在了要?jiǎng)?chuàng)建的 文件夾或者文件會(huì)出現(xiàn)如下報(bào)錯(cuò)。
上面我們只演示了創(chuàng)建一個(gè)文件夾,如果我們嘗試創(chuàng)建多層級(jí)的文件夾呢?
import os current_path = os.getcwd() print(current_path) new_path = '%s/test01' % current_path # os.makedirs(new_path) list_dir = os.listdir(current_path) print(list_dir) new_path02 = '%s/test02/test02-01' % current_path # 嘗試創(chuàng)建多級(jí)文件夾及文件 os.makedirs(new_path02)
注意:如果不指定創(chuàng)建文件夾的路徑,直接利用 os.makedirs('filename') 就可以在當(dāng)前腳本的默認(rèn)路徑下創(chuàng)建該文件夾,這里就不再進(jìn)行演示了。大家可以自己在本地試一下。
上面我們演示了 getcwd()、listdir()、makedir() 三個(gè)函數(shù),接下來(lái)我們演示 removedirs()、rename()、rmdir() 三個(gè)函數(shù)
import os current_path = os.getcwd() print(current_path) new_path = '%s/test01' % current_path # os.makedirs(new_path) list_dir = os.listdir(current_path) print(list_dir) new_path02 = '%s/test02/test02-01' % current_path # 嘗試創(chuàng)建多級(jí)文件夾及文件 # os.makedirs(new_path02) # 之所以要注銷(xiāo) os.makedir() 是因?yàn)?,我們已?jīng)創(chuàng)建好了 'test01'、'test02/test02-01' ,再次執(zhí)行會(huì)報(bào)錯(cuò) os.removedirs('test02/test02-01') # 刪除 test02 多級(jí)文件夾 os.renames('test.py', 'test_new.py') # 重命名 test.py 文件夾為 test_new.py os.rmdir('test01') # 刪除空文件夾 test01 # >>> 執(zhí)行效果如下圖
注意:當(dāng)我們使用 os.rmdir() 函數(shù)刪除非空的文件夾時(shí),是會(huì)報(bào)錯(cuò)的。比如我們嘗試刪除 dog 文件夾 就會(huì)報(bào)錯(cuò) OSError: [Errno 66] Directory not empty: 'dog' , 該提示的意思是 : OSERROR - dog 是一個(gè)非空文件夾 。
以上演示的是 OS 包常用的調(diào)用文件的函數(shù),其實(shí)OS操作文件的函數(shù)還有很多 ,大家可以嘗試 使用 dir() 函數(shù)查看并嘗試練習(xí)一下其他函數(shù)的應(yīng)用。
path 模塊
os.path 模塊同樣也是我們?cè)谌粘i_(kāi)發(fā)工作中比較常用的一個(gè)模塊,接下來(lái)我們看看 path 模塊都有哪些較常用的函數(shù)。
?path 模塊常用方法
函數(shù)名 | 參數(shù) | 介紹 | 舉例 | 返回值 |
---|---|---|---|---|
exists | path | 文件或路徑是否存在 | os.path.exists(‘d://test/’) | bool類(lèi)型 |
isdir | path | 是否是路徑 | os.path.isdir(‘d://test/’) | bool類(lèi)型 |
isabs | path | 是否是絕對(duì)路徑 | os.isabs(‘test’) | bool類(lèi)型 |
isfile | path | 是否是文件 | os.path.isfile(‘d://test.py’) | bool類(lèi)型 |
join | path, path* | 通過(guò)路徑的’//'將其用字符串合并 | os.path.join(‘d://’,‘test’) | 字符串 |
split | path | 通過(guò)路徑的’//'以最后一層路徑為及基準(zhǔn)切割成元組 | os.path.split(‘d://test’) | 元組 |
需要注意一點(diǎn):win電腦和 mac電腦的 路徑標(biāo)識(shí)符不一樣。 win系統(tǒng)為 // , mac或者linux系統(tǒng)為 / 。
結(jié)合我們上文 os 包常用的函數(shù)演示案例如下:
import os import os.path current_path = os.getcwd() # 定義 current_path 變量獲取當(dāng)前腳本的絕對(duì)路徑 print(current_path) # 打印 current_path 變量 print(os.path.isabs(current_path)) # 利用 path 模塊的 isabs 函數(shù)判斷 current_path 是否是絕對(duì)路徑 [返回結(jié)果 True] print(os.path.isabs('animal')) # 利用 path 模塊的 isabs 函數(shù)判斷 animal 是否是絕對(duì)路徑 [返回結(jié)果 False , animal 是相對(duì)路徑] new_path = '%s/test1' % current_path if os.path.exists(new_path): # 判斷 new_path 是否存在,如果存在,則刪除 new_path os.makedirs(new_path) data = os.listdir(current_path) print(data) new_path2 = os.path.join(current_path, 'test2', 'test2_01') print(new_path2) # 將 'test2'、'test2_01' 與 current_path 拼接在一起,生成一個(gè) 路徑形式 的字符串賦值給new_path2 # >>> 執(zhí)行結(jié)果為 '/Users/XXX/PycharmProjects/python_package/test2/test2_01' if os.path.exists(new_path2): # 判斷 new_path2 是否存在,如果不存在,則通過(guò) os包 的 makedirs 函數(shù)創(chuàng)建 os.makedirs(new_path2) if os.path.exists('test3'): # 判斷 'test3' 是否存在,如果不存在,則通過(guò) os包 的 makedirs 函數(shù)創(chuàng)建 os.makedirs('test3') if os.path.exists('test2/test2_01'): # 判斷 'test2/test2_01' 是否存在,如果存在,則刪除 'test2/test2_01' os.removedirs('test2/test2_01') if os.path.exists('test3'): # 判斷 'test3' 是否存在,如果存在,則將 'test3' 重命名為 'test3_new' os.rename('test3', 'test3_new') if os.path.exists('test1'): # 判斷 'test1' 是否存在,如果存在,則刪除 'test1' os.rmdir('test1') current_path = current_path + '/package_os.py' print(os.path.isfile(current_path)) # 利用 path模塊 的 isfile函數(shù) 判斷 current_path 是否是一個(gè)文件[返回結(jié)果為 True ] print(os.path.split(current_path)) # 利用 path模塊 的 split函數(shù) 將 'package_os.py' 與 路徑分割開(kāi); 實(shí)際工作中經(jīng)常通過(guò)這種方式將帶有文件的路徑進(jìn)行分割 # >>> 執(zhí)行結(jié)果為:('/Users/XXX/PycharmProjects/python_package', 'package_os.py') print(os.path.isdir(os.path.split(current_path)[0])) # 利用 path模塊 的 isdir函數(shù) 判斷 current_path 被 split 函數(shù)分割后 第一個(gè)元素是不是路徑 [返回結(jié)果為 True ] print(dir(os.path)) # 通過(guò) dir()函數(shù) 查看 當(dāng)前 os.path 模塊更多的功能;[可以自己嘗試一下 os.path 更多的功能]
以上就是Python學(xué)習(xí)之os包使用教程詳解的詳細(xì)內(nèi)容,更多關(guān)于Python os包的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python 實(shí)現(xiàn)簡(jiǎn)易的記事本
這篇文章主要介紹了python 實(shí)現(xiàn)簡(jiǎn)易的記事本的示例代碼,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-11-11用Python實(shí)現(xiàn)QQ游戲大家來(lái)找茬輔助工具
這是一個(gè)用于QQ大家來(lái)找茬(美女找茬)的輔助外掛,開(kāi)發(fā)的原因是看到老爸天天在玩這個(gè)游戲,分?jǐn)?shù)是慘不忍睹的負(fù)4000多。本來(lái)是想寫(xiě)個(gè)很簡(jiǎn)單的東西,但由于過(guò)程中老爸的多次嘲諷,逼得我不得不盡力完善,最后形成了一個(gè)小小的產(chǎn)品。2014-09-09python使用循環(huán)打印所有三位數(shù)水仙花數(shù)的實(shí)例
今天小編就為大家分享一篇python使用循環(huán)打印所有三位數(shù)水仙花數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11Python3使用TCP編寫(xiě)一個(gè)簡(jiǎn)易的文件下載器功能
這篇文章主要介紹了Python3使用TCP編寫(xiě)一個(gè)簡(jiǎn)易的文件下載器功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05