欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python必知必會(huì)之os模塊實(shí)例詳解

 更新時(shí)間:2022年10月08日 10:37:41   作者:小魚干兒?  
os模塊是Python標(biāo)準(zhǔn)庫(kù)中整理文件和目錄最為常用的模塊,該模塊提供了非常豐富的方法用來處理文件和目錄,下面這篇文章主要給大家介紹了關(guān)于Python必知必會(huì)之os模塊的相關(guān)資料,需要的朋友可以參考下

Python os 模塊

os是“operating system”的縮寫,os模塊提供各種 Python 程序與操作系統(tǒng)進(jìn)行交互的接口,使用os模塊,一方面可以方便地與操作系統(tǒng)進(jìn)行交互,另一方面頁(yè)可以極大增強(qiáng)代碼的可移植性

注意 一定要使用 import os 而不是 from os import * 。這將避免內(nèi)建的 open() 函數(shù)被 os.open() 隱式替換掉,因?yàn)樗鼈兊氖褂梅绞酱蟛幌嗤?/p>

os模塊的常用操作

import os

os.getcwd() 獲取當(dāng)前工作路徑

os.getcwd()

os.chdir() 切換工作路徑

# 將工作目錄切換到'D:/Pycharm'
os.chdir('D:/Pycharm')  
print(os.getcwd()) #D:\Pycharm

os.environ 獲取所有的環(huán)境變量,

os.environ

os.getlogin()返回通過控制終端進(jìn)程進(jìn)行登錄的用戶名

os.getlogin()

os.name 返回python運(yùn)行的環(huán)境系統(tǒng)

os.name

'''
返回值的意思
posix  Linux 和 Mac OS
nt  Windows
java  Java 虛擬機(jī)環(huán)境
''' 
  • os.mkdir 創(chuàng)建一個(gè)新的文件價(jià)夾,不能創(chuàng)建多級(jí)的文件夾

當(dāng)文件夾已經(jīng)存在時(shí)會(huì)報(bào)錯(cuò)FileExistsError

創(chuàng)建多級(jí)的文件夾會(huì)報(bào)錯(cuò)FileNotFoundError

# 在當(dāng)前目錄下創(chuàng)建一個(gè)名為test的文件夾
os.mkdir('test')

# 報(bào)錯(cuò)內(nèi)容
# FileExistsError: [WinError 183] 當(dāng)文件已存在時(shí),無法創(chuàng)建該文件。: 'test'
  • os.makedirs() 創(chuàng)建多級(jí)目錄
# 創(chuàng)建a文件夾,并且在a文件夾下創(chuàng)建b文件夾
os.makedirs('a/b')
  • os.rmdir() 刪除空文件夾

如果如果刪除的文件夾非空OSError: [WinError 145] 目錄不是空的。'filename'

# 刪除文件夾a
os.rmdir('a') 
  • os.removedirs() 遞歸刪除目錄。

工作方式類似于 rmdir(),不同之處在于,如果成功刪除了末尾一級(jí)目錄,removedirs() 會(huì)嘗試依次刪除 path 中提到的每個(gè)父目錄,直到拋出錯(cuò)誤為止(但該錯(cuò)誤會(huì)被忽略,因?yàn)檫@通常表示父目錄不是空目錄)

# 刪除文件夾 文件夾 a及子文件夾b
os.removedirs('a/b')
  • os.remove() 刪除文件
# 刪除文件a.txt
os.remove('a.txt')
  • os.rename(src, dst) 將文件或路徑(文件夾)重命名,以及移動(dòng)文件夾

src 原路徑,dst修改后的命名

只能重命名原路徑 src 最后的路徑或文件的名字,中間路徑都必須要存在,否則就會(huì)拋出FileNotFoundError

# 將文件名b修改成文件名c
os.rename('a/b','a/c')

# 文件目錄:  a/c c文件夾是a文件夾的子文件夾
# 將文件c移動(dòng)到和a同級(jí)目錄下
os.rename('a/c','c')

# 文件目錄:  a/c c文件夾是a文件夾的子文件夾 
# 將文件c移動(dòng)到和a同級(jí)目錄下并改名為'newname'
os.rename('a/c','newname')

# 文件目錄: a/c/w.txt
# 將文件w.txt修改成ww.txr
os.rename('a/c/w.txt','a/c/ww.txt')
# 同樣也可以移動(dòng)文件并重名的方式一樣,用法和移動(dòng)文件并重名的方式一樣

os.renames(old, new)遞歸重命名目錄或文件。工作方式類似 rename(),除了會(huì)首先創(chuàng)建新路徑所需的中間目錄。重命名后,將調(diào)用 removedirs() 刪除舊路徑中不需要的目錄。

# 重命名可以重命名中間路徑(實(shí)際上是,先新建新的目錄,然后判斷原目錄是否可以刪除,如果可以刪除,就刪除)
os.renames('a/b/a.txt','a/c/aaa.txt')

os.path模塊

os.path中的函數(shù)基本上是純粹的字符串操作。換句話說,傳入該模塊函數(shù)的參數(shù)甚至不需要是一個(gè)有效路徑,該模塊也不會(huì)試圖訪問這個(gè)路徑,而僅僅是按照“路徑”的通用格式對(duì)字符串進(jìn)行處理

os.path 獲取當(dāng)前環(huán)境的路徑

os.path

os.path.abspath(path) 返回路徑 path 的絕對(duì)路徑

# 根據(jù)相對(duì)路徑返回絕對(duì)路徑
print(os.path.abspath('a/c/aaa.txt'))

os.path.exists(path) 判斷該路徑或文件是否存在

path:路徑

返回布爾值,True,F(xiàn)alse

# 檢查文件是否存在
print(os.path.exists('a/c'))
# 檢查aaa.txt文件是否存在
print(os.path.exists('a/c/aaa.txt'))

os.path.getatime(path)返回path的最后訪問時(shí)間,返回的時(shí)間為秒(時(shí)間戳),可以利用tiem轉(zhuǎn)換成常用的時(shí)間格式

# 返回文件a最后的訪問時(shí)間
print(os.path.getatime('a'))

t = os.path.getatime('a')  # 獲取時(shí)間戳
tupTime = time.localtime(t)  # 將時(shí)間戳轉(zhuǎn)換成本地時(shí)間
stadardTime = time.strftime("%Y-%m-%d %H:%M:%S", tupTime)  # 轉(zhuǎn)換成對(duì)應(yīng)的時(shí)間格式
print(stadardTime) # 2022-09-18 11:44:28

os.path.getctime(path) 在windos下獲取文件的創(chuàng)建時(shí)間,在Unix返回的是最后的修改時(shí)間

# 獲取aaa.txt文件的創(chuàng)建時(shí)間(windows)
t = os.path.getctime('a/c/aaa.txt')

os.path.getsize(path) 獲取文件的大小

# 獲取文件aaa.txt的大小
os.path.getsize('a/c/aaa.txt')

os.path.split() 將路徑 path 拆分為一對(duì),即 (head, tail),其中,tail 是路徑的最后一部分,而 head 里是除最后部分外的所有內(nèi)容。tail 部分不會(huì)包含斜杠,如果 path 以斜杠結(jié)尾,則 tail 將為空。如果 path 中沒有斜杠,head 將為空。如果 path 為空,則 head 和 tail 均為空。

返回的部分是一個(gè)元組里面由兩個(gè)元素

a = os.path.split('D:/aa/bb')
print(type(a))  # <class 'tuple'>
print(a)       #  ('D:/aa', 'bb')  頭部和尾部

# 當(dāng)最后為'/‘時(shí)
a = os.path.split('D:/aa/bb/')
print(a)     # ('D:/aa/bb', '')  尾部為空
# 當(dāng)路徑path中沒有路徑的時(shí)候 
a = os.path.split('aa')
print(a)  # ('', 'aa')  # 頭部為空
 
# 當(dāng)傳入的路徑為空時(shí)
a = os.path.split( '')
print(a)  # ('', '')  # 頭部和尾部均為空

os.path.isfile() 判斷傳入的文件是否存在 返回布爾值

# 判斷文件是否存在
os.path.isfile('a/c/aaa.txt')

os.path.isdir() # 判斷文件路徑是否存在 返回布爾值

# 判斷路徑a/c是否存在
os.path.isdir('a/c')

os.open()模塊

os.open() 打開文件的一系列操作

用法和基本的open函數(shù)很類似

注解 本函數(shù)適用于底層的 I/O。常規(guī)用途請(qǐng)使用內(nèi)置函數(shù) open(),該函數(shù)的 read() 和 write() 方法(及其他方法)會(huì)返回 文件對(duì)象。要將文件描述符包裝在文件對(duì)象中,請(qǐng)使用 fdopen()。

os.open(file, flags[, mode])
'''
file 文件名
flags  模式
mode 可選參數(shù), mode 設(shè)置其權(quán)限狀態(tài)
'''

flags – 該參數(shù)可以是以下選項(xiàng),多個(gè)使用 “|” 隔開:

  • os.O_RDONLY: 以只讀的方式打開
  • os.O_WRONLY: 以只寫的方式打開
  • os.O_RDWR : 以讀寫的方式打開
  • os.O_NONBLOCK: 打開時(shí)不阻塞
  • os.O_APPEND: 以追加的方式打開
  • os.O_CREAT: 創(chuàng)建并打開一個(gè)新文件
  • os.O_TRUNC: 打開一個(gè)文件并截?cái)嗨拈L(zhǎng)度為零(必須有寫權(quán)限)
  • os.O_EXCL: 如果指定的文件存在,返回錯(cuò)誤
  • os.O_SHLOCK: 自動(dòng)獲取共享鎖
  • os.O_EXLOCK: 自動(dòng)獲取獨(dú)立鎖
  • os.O_DIRECT: 消除或減少緩存效果
  • os.O_FSYNC : 同步寫入
  • os.O_NOFOLLOW: 不追蹤軟鏈接

在寫入文件時(shí)不能直接寫入字符串否則會(huì)報(bào)錯(cuò)TypeError: a bytes-like object is required, not 'str'

# 打開文件
fd = os.open("foo.txt", os.O_RDWR|os.O_CREAT )  # 模式可以并存中間用 | 隔開
# 寫入字符串
a = b"This is test"   
os.write(fd,a)
# 關(guān)閉文件
os.close(fd)

print("關(guān)閉文件成功!!")

最后的補(bǔ)充

最后如果忘記了os的用法可以使用內(nèi)置的 dir() help() 函數(shù)來查看函數(shù)的用法

dir() 返回一個(gè)列表包括 os模塊的所有函數(shù)名

print(dir(os))

help() 返回所有os模塊的所有內(nèi)容

print(help(os))

這樣的結(jié)果看著確實(shí)有點(diǎn)不太人性化

使用help函數(shù)查看具體的函數(shù)使用方法

print(help(os.getcwd))
print(help('os.getcwd'))   # 使用字符串也可以

返回函數(shù)的作用

總結(jié)

到此這篇關(guān)于Python必知必會(huì)之os模塊的文章就介紹到這了,更多相關(guān)Python os 模塊詳解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Pandas含中文表格對(duì)齊輸出的幾種情況

    Pandas含中文表格對(duì)齊輸出的幾種情況

    今天使用python計(jì)算數(shù)據(jù)相關(guān)性,但是發(fā)現(xiàn)計(jì)算出的表格中間好多省略號(hào),而且也不對(duì)齊,?這也太難看了,下面這篇文章主要給大家介紹了關(guān)于Pandas含中文表格對(duì)齊輸出的幾種情況,需要的朋友可以參考下
    2023-04-04
  • python之class類和方法的用法詳解

    python之class類和方法的用法詳解

    這篇文章主要介紹了python中class類和方法的用法詳解,如果有不太清楚面向?qū)ο蟮念惡头椒ǖ木幊趟枷氲男』锇榭梢越梃b參考本文
    2023-03-03
  • selenium自動(dòng)化測(cè)試簡(jiǎn)單準(zhǔn)備

    selenium自動(dòng)化測(cè)試簡(jiǎn)單準(zhǔn)備

    本文主要介紹了selenium自動(dòng)化測(cè)試簡(jiǎn)單準(zhǔn)備,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Python教程之pytest命令行方式運(yùn)行用例

    Python教程之pytest命令行方式運(yùn)行用例

    pytest有豐富的命令行選項(xiàng),以滿足不同的需要,下面這篇文章主要給大家介紹了關(guān)于Python教程之pytest命令行方式運(yùn)行的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • Python數(shù)據(jù)結(jié)構(gòu)與算法中的棧詳解(3)

    Python數(shù)據(jù)結(jié)構(gòu)與算法中的棧詳解(3)

    這篇文章主要為大家詳細(xì)介紹了Python中的棧,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • pandas選擇或添加列生成新的DataFrame操作示例

    pandas選擇或添加列生成新的DataFrame操作示例

    這篇文章主要為大家介紹了pandas選擇或添加列生成新的DataFrame實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Django3.0 異步通信初體驗(yàn)(小結(jié))

    Django3.0 異步通信初體驗(yàn)(小結(jié))

    這篇文章主要介紹了Django3.0 異步通信初體驗(yàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Python time模塊詳解(常用函數(shù)實(shí)例講解,非常好)

    Python time模塊詳解(常用函數(shù)實(shí)例講解,非常好)

    在平常的代碼中,我們常常需要與時(shí)間打交道。在Python中,與時(shí)間處理有關(guān)的模塊就包括:time,datetime以及calendar。這篇文章,主要講解time模塊。
    2014-04-04
  • Python之列表推導(dǎo)式最全匯總(上篇)

    Python之列表推導(dǎo)式最全匯總(上篇)

    這篇文章主要介紹了Python之列表推導(dǎo)式最全匯總(上篇),本文章內(nèi)容詳細(xì),通過案例可以更好的理解列表推導(dǎo)式的相關(guān)知識(shí),本模塊分為了三部分,本次為上篇,需要的朋友可以參考下
    2023-01-01
  • Python中使用PIL庫(kù)實(shí)現(xiàn)圖片高斯模糊實(shí)例

    Python中使用PIL庫(kù)實(shí)現(xiàn)圖片高斯模糊實(shí)例

    這篇文章主要介紹了Python中使用PIL庫(kù)實(shí)現(xiàn)圖片高斯模糊實(shí)例,本文重點(diǎn)在修改了Pil的源碼實(shí)現(xiàn)可以自定義模糊度,需要的朋友可以參考下
    2015-02-02

最新評(píng)論