首頁 > 軟體

Python學習之os包使用教學詳解

2022-03-21 13:02:41

今天我們來學習一下 python 的內建包 —> OS 包。OS 包擁有著普遍的作業系統功能,擁有著各種各樣的函數來作業系統的驅動功能。其中最常用的就是對 路徑 與 檔案的操作,比如檢查某個路徑下是否存在某個檔案,某個路徑是否存在等。也可以建立、刪除檔案等,接下來我們就詳細的看一看 OS 中關於檔案的操作功能與用法。

os 模組

檔案與目錄函數介紹

函數名引數介紹舉例 返回值
getcwd沒有引數返回當前路徑os.getcwd()字串
listdirpath返回指定路徑下所有的檔案或資料夾os.listdir(‘c://windows’)返回一個列表
makedirpath mode建立多級資料夾os.makedirs(‘d://pycharm/py’)無返回值
removedirspath刪除多級路徑下的資料夾os.removedirs(‘d://pycharm/py’)無返回值
renameoldname、newname將檔案或資料夾重新命名os.rename(‘d://pycharm’,‘d://pycharm01’)無返回值
rmdirpath只能刪除空資料夾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() 函數檢視並嘗試練習一下其他函數的應用。

path 模組

os.path 模組同樣也是我們在日常開發工作中比較常用的一個模組,接下來我們看看 path 模組都有哪些較常用的函數。

​path 模組常用方法

函數名引數介紹舉例 返回值
existspath檔案或路徑是否存在os.path.exists(‘d://test/’)bool型別
isdirpath是否是路徑os.path.isdir(‘d://test/’)bool型別
isabspath是否是絕對路徑os.isabs(‘test’)bool型別
isfilepath是否是檔案os.path.isfile(‘d://test.py’)bool型別
joinpath, path*通過路徑的’//'將其用字串合併os.path.join(‘d://’,‘test’)字串
splitpath通過路徑的’//'以最後一層路徑為及基準切割成元組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其它相關文章!


IT145.com E-mail:sddin#qq.com