亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python標(biāo)準(zhǔn)庫之os模塊詳解

 更新時間:2023年08月10日 11:37:52   作者:士別三日wyx  
Python的os模塊是用于與操作系統(tǒng)進(jìn)行交互的模塊,它提供了許多函數(shù)和方法來執(zhí)行文件和目錄操作、進(jìn)程管理、環(huán)境變量訪問等,本文詳細(xì)介紹了Python標(biāo)準(zhǔn)庫中os模塊,感興趣的同學(xué)跟著小編一起來看看吧

OS標(biāo)準(zhǔn)庫是操作系統(tǒng)接口模塊,提供了操作系統(tǒng)相關(guān)功能的調(diào)用函數(shù)。

使用OS標(biāo)準(zhǔn)庫前,需要導(dǎo)入模塊 import os

1、文件目錄操作

os.stat() 獲取文件狀態(tài)

獲取文件或文件描述符的狀態(tài),返回一個 stat_result 對象。

  • stat_result對象有很多可以調(diào)用的屬性:
  • st_atime:最近訪問時間,單位秒
  • st_mtime:最近修改時間,單位秒
  • st_ctime:文件創(chuàng)建時間(Windows),修改時間(unix),單位秒
  • st_size:文件大小,單位字節(jié)
  • st_uid:文件所有者的ID
  • st_nlink:硬鏈接數(shù)量
  • st_dev:文件所在設(shè)備的標(biāo)識符
  • st_ino:文件的唯一標(biāo)識(Windows是文件索引號,Unix是索引節(jié)點(diǎn)號)
  • st_mode:文件模式,包括文件類型和文件模式位(即權(quán)限位)。
  • st_atime_ns:最近訪問時間,單位納秒
  • st_mtime_ns:最近修改時間,單位納秒
  • st_ctime_ns:文件創(chuàng)建時間(Windows),修改時間(unix),單位納秒

還有一些屬性需要在Unix系統(tǒng)上才能調(diào)用:

  • st_blocks:文件的字節(jié)塊數(shù),每塊512字節(jié)。
  • st_blksize:“首選的” 塊大小,用于提高文件系統(tǒng) I/O 效率。寫入文件時塊大小太小可能會導(dǎo)致讀取-修改-重寫效率低下。
  • st_rdev:設(shè)備類型(針對inode設(shè)備)
  • st_flags:文件標(biāo)志位(用戶定義的)
  • st_gen:文件生成號
  • st_birthtime:文件創(chuàng)建時間

os.utime() 修改文件時間

修改文件的訪問時間和修改時間,修改后需要重新獲取 stat_result 對象,才會更新。

語法

os.uime( path, (atime, mtime))

參數(shù)

  • path:(必選)文件路徑
  • atime:(必選)文件訪問時間
  • mtime:(必選)文件修改時間

實(shí)例

import os
os.utime('newDir/myFile', (1491413771, 1591413771))
statResult = os.stat('newDir/myFile')
print(statResult.st_atime)
print(statResult.st_mtime)

輸出:

1491413771.0
1591413771.0

os.rename() 修改文件/目錄

修改文件名或目錄名。

語法

os.rename( src, dst )

參數(shù)

  • src:(必選)源文件/目錄,即需要修改的文件/目錄
  • dst:(必選)目的文件/目錄,即修改后的文件/目錄

實(shí)例

import os
os.rename('myFile', 'newName')

對于Windows系統(tǒng),文件名已存在會報錯 FileExistsError。

對于Unix系統(tǒng),將文件重命名為目錄會報錯 IsADirectoryError;將目錄重命名為文件會報錯 NotADirectoryError。

os.renames() 遞歸修改文件/目錄

遞歸修改文件名或目錄名。先創(chuàng)建所需要的中間目錄,重命名后,再調(diào)用 removedirs() 刪除舊路徑中不需要的目錄。

語法

os.renames( old, new )

參數(shù)

old:(必選)舊路徑new:(必選)新路徑

實(shí)例

import os
os.renames('myFile', 'newDir/myFile')

os.replace() 替換文件/目錄

修改文件名或目錄名,如果文件名已存在,則會靜默修改;如果目錄已存在,則會報錯 OSError。

語法

os.replace( old, new )

參數(shù)

  • old:(必選)修改前的路徑
  • new:(必選)修改后的路徑

實(shí)例

import os
os.replace('myFile', 'newDir/myFile')

os.remove() 刪除文件

刪除文件,刪除目錄會報錯 FileNotFoundError

語法

os.remove( path )

參數(shù)

  • path:(必選)文件路徑(絕對路徑/相對路徑)

實(shí)例

import os
os.remove('myFile')

os.getcwd() 獲取工作目錄

獲取當(dāng)前工作目錄,也就是當(dāng)前所在路徑,返回字符串類型。

import os
print(os.getcwd())

輸出:

E:\data\PrCharm\pythonProject1

os.getcwdb() 獲取工作目錄

獲取當(dāng)前工作目錄,二進(jìn)制序列(bytes)類型。

import os
print(os.getcwdb())

輸出:

b'E:\\data\\PrCharm\\pythonProject1'

os.chdir() 修改工作目錄

修改當(dāng)前工作目錄

語法

os.chdir( path )

參數(shù)

  • path:(必選,str類型)需要修改的路徑

實(shí)例

import os
os.chdir('E://data')
print(os.getcwd())

輸出:

E:\data

os.mkdir() 創(chuàng)建目錄

創(chuàng)建目錄,如果目錄已存在會報錯 FileExistsError,如果路徑中父目錄不存在會報錯 FileNotFoundError。

語法

os.mkdir( path, mode )

參數(shù)

  • path:(必選)目錄的路徑(絕對路徑/相對路徑)
  • mode:目錄的權(quán)限(某些系統(tǒng)會忽略)

實(shí)例

import os
os.mkdir('myDir')

當(dāng)前目錄下創(chuàng)建了目錄

在這里插入圖片描述

os.makedirs() 創(chuàng)建多級目錄

創(chuàng)建多級目錄,上級目錄不存在也會自動創(chuàng)建。

語法

os.makedirs( path, mode )

參數(shù)

path:(必選)目錄的路徑(絕對路徑/相對路徑)mode:目錄的權(quán)限(某些系統(tǒng)會忽略)

實(shí)例

import os
os.makedirs('myDir/dir1')

當(dāng)前目錄下創(chuàng)建了目錄

在這里插入圖片描述

os.rmdir() 刪除目錄

刪除目錄,如果目錄不存在,會報錯 FileNotFoundError;如果目錄不為空,會報錯 OSError。

語法

os.rmdir( path )

參數(shù)

  • path:(必選)需要刪除的目錄(絕對路徑/相對路徑)

實(shí)例

import os
os.rmdir('newDir')

os.removedirs() 刪除多級目錄

遞歸刪除多級目錄,如果刪除了最后一級目錄,會嘗試依次刪除上級目錄(刪除不掉不會報錯,因?yàn)榇蠖嗍且驗(yàn)槟夸洸粸榭眨?/p>

語法

os.removedirs( path )

參數(shù)

  • path:(必選)目錄路徑

實(shí)例

import os
os.removedirs('myDir/dir1')

2、系統(tǒng)信息

os.name 獲取操作系統(tǒng)類型

獲取操作系統(tǒng)的類型,只有三個值 nt 、 posix java

  • nt:Windows系統(tǒng)
  • posix:Linux/mac系統(tǒng)
  • java:java虛擬機(jī)

比如,我的電腦是Windows,就返回 nt

import os
print(os.name)

輸出:

nt

os.environ 獲取環(huán)境變量

獲取系統(tǒng)環(huán)境變量等各種系統(tǒng)信息(導(dǎo)入OS模塊時自動收集),字典格式,可以根據(jù)建獲取

Windows常用字段

os.environ['HOMEPATH']		# 當(dāng)前用戶主目錄。
os.environ['TEMP']			# 臨時目錄路徑。
os.environ["PATHEXT"]		# 可執(zhí)行文件。
os.environ['SYSTEMROOT']	# 系統(tǒng)主目錄。
os.environ['LOGONSERVER']	# 機(jī)器名。

Linux常用字段

os.environ['USER']			# 當(dāng)前使用用戶。
os.environ['LC_COLLATE']	# 路徑擴(kuò)展的結(jié)果排序時的字母順序。
os.environ['SHELL']			# 使用shell的類型。
os.environ['LAN']			# 使用的語言。
os.environ['SSH_AUTH_SOCK']	# ssh的執(zhí)行路徑。

環(huán)境變量的增刪改查操作

import os
environ = os.environ
# 新增
environ['環(huán)境變量名'] = '環(huán)境變量值'
# 刪除
del environ['環(huán)境變量名']
# 修改
environ['環(huán)境變量名'] = '新環(huán)境變量值'
# 查詢(變量不存在則返回默認(rèn)值)
environ['環(huán)境變量名']
environ.get('環(huán)境變量名', '默認(rèn)值')
# 判斷(存在返回True,不存在返回False)
'環(huán)境變量值' in environ

os.getenv() 獲取環(huán)境變量

根據(jù)環(huán)境變量名,獲取環(huán)境變量的值,如果環(huán)境變量名不存在,就返回default。

語法

os.getenv( key, default )

參數(shù)

  • key:(必選,str類型)環(huán)境變量名
  • default:(可選)環(huán)境變量不存在時返回,默認(rèn)值是 None

實(shí)例

import os
print(os.getenv('TEMP'))

輸出:

C:\Users\WANGYU~1\AppData\Local\Temp

os.get_exec_path() 獲取可執(zhí)行文件路徑

獲取可執(zhí)行文件路徑,從 environ 對象中,返回可執(zhí)行文件目錄的列表。

語法

os.get_exec_path( environ )

參數(shù)

  • environ:(可選)默認(rèn)值None,即使用當(dāng)前的 environ。

實(shí)例

import os
print(os.get_exec_path())

輸出:

['E:\\data\\PrCharm\\pythonProject1\\venv\\Scripts', 'C:\\......

os.cpu_count() 獲取CPU數(shù)量

返回系統(tǒng)的CPU數(shù)量,不確定就返回None。

語法

os.cpu_count()

實(shí)例

import os
print(os.cpu_count())

輸出:

8

os.getlogin() 獲取登錄用戶

獲取當(dāng)前登錄用戶,準(zhǔn)確來說,是通過控制終端進(jìn)程進(jìn)行登錄的用戶名。

import os
print(os.getlogin())

os.getpid() 獲取當(dāng)前進(jìn)程ID

獲取當(dāng)前進(jìn)程ID

import os
print(os.getpid())

輸出:

8212

os.getppid() 獲取父進(jìn)程ID

獲取當(dāng)前進(jìn)程的父進(jìn)程ID

import os
print(os.getppid())

輸出:

14132

os.urandom() 獲取隨機(jī)字節(jié)

獲取指定大小的隨機(jī)字節(jié),常用于加密。

語法

os.urandom( size )

參數(shù)

  • size:(必選)指定隨機(jī)字節(jié)的大小

實(shí)例

mport os
print(os.urandom(8))

輸出:

b'\xb1\n\xbaw2\x88\x84\xf8'

3、進(jìn)程管理

創(chuàng)建和管理進(jìn)程的函數(shù)。

os.times() 獲取進(jìn)程時間

返回當(dāng)前的全局進(jìn)程時間,列表形式,有5個屬性。

  • user:用戶時間
  • system:系統(tǒng)時間
  • children_user:所有子進(jìn)程的用戶時間
  • children_system:所有子進(jìn)程的系統(tǒng)時間
  • elapsed:從過去的固定時間點(diǎn)起,經(jīng)過的真實(shí)時間

Windows系統(tǒng)上,只有user、system兩個屬性有值,其他均為0。

語法

os.times()

實(shí)例

import os
times = os.times()
print(times)

輸出:

nt.times_result(user=0.046875, system=0.109375, children_user=0.0, children_system=0.0, elapsed=0.0)

os.abort() 中斷當(dāng)前進(jìn)程

發(fā)送 SIGABRT 信號給當(dāng)前進(jìn)程,用來終止進(jìn)程,如果進(jìn)程沒有中斷,則函數(shù)不會返回。

  • Unix系統(tǒng)會生成一個核心轉(zhuǎn)儲文件
  • Windows系統(tǒng)立即返回退出代碼

語法

os.abort()

比如,當(dāng)程序出現(xiàn)嚴(yán)重錯誤時,調(diào)用 os.abort() 終止進(jìn)程。

import os
try:
    # 業(yè)務(wù)代碼
    pass
except:
    os.abort()

補(bǔ)充:

  • SIGABRT用來中止一個程序,處理函數(shù)返回后,所有打開的文件描述符將會被關(guān)閉,流也會被flush,程序也會結(jié)束。
  • SIGABRT是一個暴力信號,可能會破壞進(jìn)程的狀態(tài),應(yīng)該謹(jǐn)慎使用。

os.system() 執(zhí)行系統(tǒng)命令

執(zhí)行系統(tǒng)命令,并在控制臺輸出執(zhí)行結(jié)果

語法

os.system( commend )

參數(shù)

commend:(必選)需要執(zhí)行的命令

實(shí)例

import os
os.system('ping www.baidu.com')

輸出:

???? Ping www.a.shifen.com [39.156.66.18] ???? 32 ????????:
???? 39.156.66.18 ????: ???=32 ???=17ms TTL=50
???? 39.156.66.18 ????: ???=32 ???=16ms TTL=50

os.popen() 執(zhí)行shell命令

通過Python執(zhí)行系統(tǒng)命令,返回命令的執(zhí)行結(jié)果(文本類型的對象)。

語法

os.popen( command, mode, buffer )

參數(shù)

  • command:(必選)需要執(zhí)行的命令
  • mode:(可選)文件打開模式,默認(rèn)值 r (只讀模式)
  • buffer:緩沖區(qū)大小,

實(shí)例

import os
out = os.popen('ping www.baidu.com')
print(out.read())

輸出:

正在 Ping www.a.shifen.com [39.156.66.14] 具有 32 字節(jié)的數(shù)據(jù):
來自 39.156.66.14 的回復(fù): 字節(jié)=32 時間=13ms TTL=50
來自 39.156.66.14 的回復(fù): 字節(jié)=32 時間=48ms TTL=50

os.startfile() 打開文件

自動打開文件,絕對路徑要用 / ,相對路徑要用 \

語法

os.startfile( path )

實(shí)例

import os
os.startfile('newDir\myFile')

執(zhí)行后,桌面上會打開指定的文件。

4、錯誤/異常

OS模塊所有函數(shù)都會拋出 OSError 及其子類

BlockingIOError

OSError 的子類

當(dāng)在設(shè)置為非阻塞操作的對象(例如:套接字)上,執(zhí)行阻塞操作時觸發(fā)。

ChildProcessError

OSError 的子類

子進(jìn)程上的操作失敗時觸發(fā)。

ConnectionError

OSError 的子類

與連接相關(guān)的問題的基類,常見的有它的子類。

BrokenPipeError

ConnectionError 的子類

管道中斷時觸發(fā)。

管道是單向通信的,在管道另一端關(guān)閉時寫入,或者在已經(jīng)關(guān)閉的套接字上寫入,都會導(dǎo)致管道中斷。

ConnectionAbortedError

ConnectionError 的子類

連接被對端終止時觸發(fā)。

這種異常通常意味著網(wǎng)絡(luò)連接被意外中斷,可能是服務(wù)器出現(xiàn)故障、網(wǎng)絡(luò)擁堵等原因?qū)е碌?,比?服務(wù)器返回的響應(yīng)超時或斷開了連接。

ConnectionRefusedError

ConnectionError 的子類

連接被對方拒絕時觸發(fā)。

常見的原因有:

你想連接的服務(wù)器沒有啟動相關(guān)服務(wù)防火墻阻止連接端口被占用,關(guān)閉占用端口的服務(wù)IP或端口錯誤 ConnectionResetError

ConnectionError 的子類

對端重置連接時觸發(fā)。

常見的原因有:

高延遲或丟包等網(wǎng)絡(luò)錯誤導(dǎo)致連接中斷防火墻等ACL訪問控制出于安全原因阻止了連接 FileExistsError

OSError 的子類

創(chuàng)建的文件或目錄已經(jīng)存在時觸發(fā)

FileNotFoundError

OSError 的子類

請求的文件或目錄不存在時觸發(fā)

InterruptedError

OSError 的子類

系統(tǒng)調(diào)用被傳入信號中斷時觸發(fā)

IsADirectoryError

OSError 的子類

對目錄執(zhí)行文件操作時觸發(fā)

NotADirectoryError

OSError 的子類

對文件執(zhí)行目錄操作時觸發(fā)

PermissionError

OSError的子類

執(zhí)行的操作沒有足夠的訪問權(quán)限時觸發(fā)

ProcessLookupError

OSError的子類

指定的進(jìn)程不存在時觸發(fā)

TimeoutError

OSError的子類

系統(tǒng)功能在系統(tǒng)級別的超時時觸發(fā)

以上就是Python標(biāo)準(zhǔn)庫之os模塊詳解的詳細(xì)內(nèi)容,更多關(guān)于Python os模塊的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論