日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達者為師

網(wǎng)站首頁 編程語言 正文

Python學(xué)習(xí)之os包使用教程詳解_python

作者:渴望力量的哈士奇 ? 更新時間: 2022-05-22 編程語言

今天我們來學(xué)習(xí)一下 python 的內(nèi)置包 —> OS 包。OS 包擁有著普遍的操作系統(tǒng)功能,擁有著各種各樣的函數(shù)來操作系統(tǒng)的驅(qū)動功能。其中最常用的就是對 路徑 與 文件的操作,比如檢查某個路徑下是否存在某個文件,某個路徑是否存在等。也可以創(chuàng)建、刪除文件等,接下來我們就詳細的看一看 OS 中關(guān)于文件的操作功能與用法。

os 模塊

文件與目錄函數(shù)介紹

函數(shù)名 參數(shù) 介紹 舉例 ?返回值
getcwd 沒有參數(shù) 返回當(dāng)前路徑 os.getcwd() 字符串
listdir path 返回指定路徑下所有的文件或文件夾 os.listdir(‘c://windows’) 返回一個列表
makedir path mode 創(chuàng)建多級文件夾 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)

# >>> 執(zhí)行結(jié)果如下:
# >>> /Users/user_name/PycharmProjects/XXXXX/python_package/animal		這是當(dāng)前Mac系統(tǒng)的絕對路徑,如果是WIN系統(tǒng)會顯示磁盤符
# >>> ['cat', 'dog', 'test_time.py', '__init__.py', 'test.py', 'package_os.py', 'test01']
# >>> 列出來當(dāng)前路徑下的所有文件,并創(chuàng)建 'test01' 文件夾成功

這里有個需要注意的地方,如果當(dāng)前路徑下已經(jīng)存在了要創(chuàng)建的 文件夾或者文件會出現(xiàn)如下報錯。

上面我們只演示了創(chuàng)建一個文件夾,如果我們嘗試創(chuàng)建多層級的文件夾呢?

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)建多級文件夾及文件
os.makedirs(new_path02)

注意:如果不指定創(chuàng)建文件夾的路徑,直接利用 os.makedirs('filename') 就可以在當(dāng)前腳本的默認路徑下創(chuàng)建該文件夾,這里就不再進行演示了。大家可以自己在本地試一下。

上面我們演示了 getcwd()、listdir()、makedir() 三個函數(shù),接下來我們演示 removedirs()、rename()、rmdir() 三個函數(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)建多級文件夾及文件
# os.makedirs(new_path02)
# 之所以要注銷 os.makedir() 是因為,我們已經(jīng)創(chuàng)建好了 'test01'、'test02/test02-01' ,再次執(zhí)行會報錯

os.removedirs('test02/test02-01')                   # 刪除 test02 多級文件夾
os.renames('test.py', 'test_new.py')      # 重命名 test.py 文件夾為 test_new.py
os.rmdir('test01')                        # 刪除空文件夾 test01

# >>> 執(zhí)行效果如下圖

注意:當(dāng)我們使用 os.rmdir() 函數(shù)刪除非空的文件夾時,是會報錯的。比如我們嘗試刪除 dog 文件夾 就會報錯 OSError: [Errno 66] Directory not empty: 'dog' , 該提示的意思是 : OSERROR - dog 是一個非空文件夾 。

以上演示的是 OS 包常用的調(diào)用文件的函數(shù),其實OS操作文件的函數(shù)還有很多 ,大家可以嘗試 使用 dir() 函數(shù)查看并嘗試練習(xí)一下其他函數(shù)的應(yīng)用。

path 模塊

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

?path 模塊常用方法

函數(shù)名 參數(shù) 介紹 舉例 ?返回值
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 通過路徑的’//'以最后一層路徑為及基準(zhǔn)切割成元組 os.path.split(‘d://test’) 元組

需要注意一點:win電腦和 mac電腦的 路徑標(biāo)識符不一樣。 win系統(tǒng)為 // , mac或者linux系統(tǒng)為 / 。

結(jié)合我們上文 os 包常用的函數(shù)演示案例如下:

import os
import os.path


current_path = os.getcwd()			# 定義 current_path 變量獲取當(dāng)前腳本的絕對路徑
print(current_path)					# 打印 current_path 變量
print(os.path.isabs(current_path))	# 利用 path 模塊的 isabs 函數(shù)判斷 current_path 是否是絕對路徑 [返回結(jié)果 True]
print(os.path.isabs('animal'))		# 利用 path 模塊的 isabs 函數(shù)判斷 animal 是否是絕對路徑 [返回結(jié)果 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
# >>> 執(zhí)行結(jié)果為 '/Users/XXX/PycharmProjects/python_package/test2/test2_01'


if os.path.exists(new_path2):			# 判斷 new_path2 是否存在,如果不存在,則通過 os包 的 makedirs 函數(shù)創(chuàng)建
    os.makedirs(new_path2)
if os.path.exists('test3'):				# 判斷 'test3' 是否存在,如果不存在,則通過 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 是否是一個文件[返回結(jié)果為 True ]

print(os.path.split(current_path))		
# 利用 path模塊 的 split函數(shù) 將 'package_os.py' 與 路徑分割開; 實際工作中經(jīng)常通過這種方式將帶有文件的路徑進行分割
# >>> 執(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ù)分割后 第一個元素是不是路徑 [返回結(jié)果為 True ]

print(dir(os.path))
# 通過 dir()函數(shù) 查看 當(dāng)前 os.path 模塊更多的功能;[可以自己嘗試一下 os.path 更多的功能]

原文鏈接:https://blog.csdn.net/weixin_42250835/article/details/123624539

欄目分類
最近更新