<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
今天我們來學習一下 python 的內建包 —> OS 包。OS 包擁有著普遍的作業系統功能,擁有著各種各樣的函數來作業系統的驅動功能。其中最常用的就是對 路徑 與 檔案的操作,比如檢查某個路徑下是否存在某個檔案,某個路徑是否存在等。也可以建立、刪除檔案等,接下來我們就詳細的看一看 OS 中關於檔案的操作功能與用法。
函數名 | 引數 | 介紹 | 舉例 | 返回值 |
---|---|---|---|---|
getcwd | 沒有引數 | 返回當前路徑 | os.getcwd() | 字串 |
listdir | path | 返回指定路徑下所有的檔案或資料夾 | os.listdir(‘c://windows’) | 返回一個列表 |
makedir | path mode | 建立多級資料夾 | os.makedirs(‘d://pycharm/py’) | 無返回值 |
removedirs | path | 刪除多級路徑下的資料夾 | os.removedirs(‘d://pycharm/py’) | 無返回值 |
rename | oldname、newname | 將檔案或資料夾重新命名 | os.rename(‘d://pycharm’,‘d://pycharm01’) | 無返回值 |
rmdir | path | 只能刪除空資料夾 | os.rmdir(‘d://pycharm’) | 無返回值 |
範例如下:
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) # >>> 執行結果如下: # >>> /Users/user_name/PycharmProjects/XXXXX/python_package/animal 這是當前Mac系統的絕對路徑,如果是WIN系統會顯示磁碟符 # >>> ['cat', 'dog', 'test_time.py', '__init__.py', 'test.py', 'package_os.py', 'test01'] # >>> 列出來當前路徑下的所有檔案,並建立 'test01' 資料夾成功
這裡有個需要注意的地方,如果當前路徑下已經存在了要建立的 資料夾或者檔案會出現如下報錯。
上面我們只演示了建立一個資料夾,如果我們嘗試建立多層級的資料夾呢?
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 # 嘗試建立多級資料夾及檔案 os.makedirs(new_path02)
注意:如果不指定建立資料夾的路徑,直接利用 os.makedirs('filename') 就可以在當前指令碼的預設路徑下建立該資料夾,這裡就不再進行演示了。大家可以自己在本地試一下。
上面我們演示了 getcwd()、listdir()、makedir() 三個函數,接下來我們演示 removedirs()、rename()、rmdir() 三個函數
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 # 嘗試建立多級資料夾及檔案 # os.makedirs(new_path02) # 之所以要登出 os.makedir() 是因為,我們已經建立好了 'test01'、'test02/test02-01' ,再次執行會報錯 os.removedirs('test02/test02-01') # 刪除 test02 多級資料夾 os.renames('test.py', 'test_new.py') # 重新命名 test.py 資料夾為 test_new.py os.rmdir('test01') # 刪除空資料夾 test01 # >>> 執行效果如下圖
注意:當我們使用 os.rmdir() 函數刪除非空的資料夾時,是會報錯的。比如我們嘗試刪除 dog 資料夾 就會報錯 OSError: [Errno 66] Directory not empty: 'dog' , 該提示的意思是 : OSERROR - dog 是一個非空資料夾 。
以上演示的是 OS 包常用的呼叫檔案的函數,其實OS操作檔案的函數還有很多 ,大家可以嘗試 使用 dir() 函數檢視並嘗試練習一下其他函數的應用。
os.path 模組同樣也是我們在日常開發工作中比較常用的一個模組,接下來我們看看 path 模組都有哪些較常用的函數。
函數名 | 引數 | 介紹 | 舉例 | 返回值 |
---|---|---|---|---|
exists | path | 檔案或路徑是否存在 | os.path.exists(‘d://test/’) | bool型別 |
isdir | path | 是否是路徑 | os.path.isdir(‘d://test/’) | bool型別 |
isabs | path | 是否是絕對路徑 | os.isabs(‘test’) | bool型別 |
isfile | path | 是否是檔案 | os.path.isfile(‘d://test.py’) | bool型別 |
join | path, path* | 通過路徑的’//'將其用字串合併 | os.path.join(‘d://’,‘test’) | 字串 |
split | path | 通過路徑的’//'以最後一層路徑為及基準切割成元組 | os.path.split(‘d://test’) | 元組 |
需要注意一點:win電腦和 mac電腦的 路徑識別符號不一樣。 win系統為 // , mac或者linux系統為 / 。
結合我們上文 os 包常用的函數演示案例如下:
import os import os.path current_path = os.getcwd() # 定義 current_path 變數獲取當前指令碼的絕對路徑 print(current_path) # 列印 current_path 變數 print(os.path.isabs(current_path)) # 利用 path 模組的 isabs 函數判斷 current_path 是否是絕對路徑 [返回結果 True] print(os.path.isabs('animal')) # 利用 path 模組的 isabs 函數判斷 animal 是否是絕對路徑 [返回結果 False , animal 是相對路徑] 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 拼接在一起,生成一個 路徑形式 的字串賦值給new_path2 # >>> 執行結果為 '/Users/XXX/PycharmProjects/python_package/test2/test2_01' if os.path.exists(new_path2): # 判斷 new_path2 是否存在,如果不存在,則通過 os包 的 makedirs 函數建立 os.makedirs(new_path2) if os.path.exists('test3'): # 判斷 'test3' 是否存在,如果不存在,則通過 os包 的 makedirs 函數建立 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函數 判斷 current_path 是否是一個檔案[返回結果為 True ] print(os.path.split(current_path)) # 利用 path模組 的 split函數 將 'package_os.py' 與 路徑分割開; 實際工作中經常通過這種方式將帶有檔案的路徑進行分割 # >>> 執行結果為:('/Users/XXX/PycharmProjects/python_package', 'package_os.py') print(os.path.isdir(os.path.split(current_path)[0])) # 利用 path模組 的 isdir函數 判斷 current_path 被 split 函數分割後 第一個元素是不是路徑 [返回結果為 True ] print(dir(os.path)) # 通過 dir()函數 檢視 當前 os.path 模組更多的功能;[可以自己嘗試一下 os.path 更多的功能]
以上就是Python學習之os包使用教學詳解的詳細內容,更多關於Python os包的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45