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

Python標準庫之os模塊詳解

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

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

使用OS標準庫前,需要導入模塊 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:文件所在設備的標識符
  • st_ino:文件的唯一標識(Windows是文件索引號,Unix是索引節(jié)點號)
  • 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 效率。寫入文件時塊大小太小可能會導致讀取-修改-重寫效率低下。
  • st_rdev:設備類型(針對inode設備)
  • st_flags:文件標志位(用戶定義的)
  • st_gen:文件生成號
  • st_birthtime:文件創(chuàng)建時間

os.utime() 修改文件時間

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

語法

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

參數(shù)

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

實例

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:(必選)目的文件/目錄,即修改后的文件/目錄

實例

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:(必選)新路徑

實例

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

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

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

語法

os.replace( old, new )

參數(shù)

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

實例

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

os.remove() 刪除文件

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

語法

os.remove( path )

參數(shù)

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

實例

import os
os.remove('myFile')

os.getcwd() 獲取工作目錄

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

import os
print(os.getcwd())

輸出:

E:\data\PrCharm\pythonProject1

os.getcwdb() 獲取工作目錄

獲取當前工作目錄,二進制序列(bytes)類型。

import os
print(os.getcwdb())

輸出:

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

os.chdir() 修改工作目錄

修改當前工作目錄

語法

os.chdir( path )

參數(shù)

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

實例

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)會忽略)

實例

import os
os.mkdir('myDir')

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

在這里插入圖片描述

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

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

語法

os.makedirs( path, mode )

參數(shù)

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

實例

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

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

在這里插入圖片描述

os.rmdir() 刪除目錄

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

語法

os.rmdir( path )

參數(shù)

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

實例

import os
os.rmdir('newDir')

os.removedirs() 刪除多級目錄

遞歸刪除多級目錄,如果刪除了最后一級目錄,會嘗試依次刪除上級目錄(刪除不掉不會報錯,因為大多是因為目錄不為空)。

語法

os.removedirs( path )

參數(shù)

  • path:(必選)目錄路徑

實例

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虛擬機

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

import os
print(os.name)

輸出:

nt

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

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

Windows常用字段

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

Linux常用字段

os.environ['USER']			# 當前使用用戶。
os.environ['LC_COLLATE']	# 路徑擴展的結(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)境變量值'
# 查詢(變量不存在則返回默認值)
environ['環(huán)境變量名']
environ.get('環(huá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)境變量不存在時返回,默認值是 None

實例

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:(可選)默認值None,即使用當前的 environ。

實例

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()

實例

import os
print(os.cpu_count())

輸出:

8

os.getlogin() 獲取登錄用戶

獲取當前登錄用戶,準確來說,是通過控制終端進程進行登錄的用戶名。

import os
print(os.getlogin())

os.getpid() 獲取當前進程ID

獲取當前進程ID

import os
print(os.getpid())

輸出:

8212

os.getppid() 獲取父進程ID

獲取當前進程的父進程ID

import os
print(os.getppid())

輸出:

14132

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

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

語法

os.urandom( size )

參數(shù)

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

實例

mport os
print(os.urandom(8))

輸出:

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

3、進程管理

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

os.times() 獲取進程時間

返回當前的全局進程時間,列表形式,有5個屬性。

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

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

語法

os.times()

實例

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() 中斷當前進程

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

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

語法

os.abort()

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

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

補充:

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

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

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

語法

os.system( commend )

參數(shù)

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

實例

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 (只讀模式)
  • buffer:緩沖區(qū)大小,

實例

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 的回復: 字節(jié)=32 時間=13ms TTL=50
來自 39.156.66.14 的回復: 字節(jié)=32 時間=48ms TTL=50

os.startfile() 打開文件

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

語法

os.startfile( path )

實例

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

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

4、錯誤/異常

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

BlockingIOError

OSError 的子類

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

ChildProcessError

OSError 的子類

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

ConnectionError

OSError 的子類

與連接相關的問題的基類,常見的有它的子類。

BrokenPipeError

ConnectionError 的子類

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

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

ConnectionAbortedError

ConnectionError 的子類

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

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

ConnectionRefusedError

ConnectionError 的子類

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

常見的原因有:

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

ConnectionError 的子類

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

常見的原因有:

高延遲或丟包等網(wǎng)絡錯誤導致連接中斷防火墻等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的子類

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

TimeoutError

OSError的子類

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

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

相關文章

最新評論