文章目錄
- 成員變數和無參函式
- 常用單參函式
- 與復制移動重命名相關的函式
- os.path
- 檔案描述符操作
- 行程管理
- stat_result
os,即作業系統,os模塊提供一些與作業系統互動的介面,是一個非常強大的內置包,由于其內容過多,很大一部分功能我也沒用過,如有紕漏之處還望指出,在此謝過,
成員變數和無參函式
| (回傳)型別 | 成員變數 | |
|---|---|---|
os.name | 字串 | 作業系統名稱,取值為posix, nt, java分別代表當前系統為Linux, Windows, java虛擬機 |
os.environ | 字典 | 當前系統環境變數的鍵值對 |
getcwd() | 字串 | 回傳當前作業目錄(get the current working directory) |
getcwdb() | 位元組串 | 回傳當前作業目錄 |
os.getpid() | int | 回傳當前行程ID |
os.getppid() | int | 回傳父行程ID |
os.abort() | 取消當前行程 | |
os.getlogin() | 回傳當前用戶 | |
os.cpu_count() | int | 回傳CPU數目 |
supports_常量
均與作業系統(OS)相關,除supports_bytes_environ外均為集合,下面為其在Windows中的值,
>>> os.supports_bytes_environ
False #若OS上原生環境型別是位元組型則為True
>>> os.supports_effective_ids
set() #若當前平臺支持effective_ids,則回傳os.access()
>>> os.supports_fd #回傳支持檔案描述符的函式
{<built-in function stat>, <built-in function truncate>}
>>> os.supports_dir_fd #回傳支持dir_fd的函式
set()
>>> os.supports_follow_symlinks #回傳follow_symlinks可為False的函式集合
{<built-in function stat>}
常用單參函式
| 輸入 | 輸出 | |
|---|---|---|
listdir | 目錄路徑 | 輸入路徑的子路徑構成的list默認輸入為當前的作業路徑 |
scandir | 目錄路徑 | 輸入路徑的子路徑構成的迭代器 |
walk | 目錄路徑 | 輸入路徑的子路徑構成的迭代器 |
mkdir | 目錄路徑 | 創建一個新的檔案夾 該檔案夾的父級目錄必須已經存在 |
makedir | 目錄路徑 | 遞回創建新檔案夾 |
remove | 檔案路徑 | 洗掉檔案 |
rmdir | 目錄路徑 | 洗掉檔案夾,檔案夾下不得有子檔案夾 |
removedirs | 目錄路徑 | 遞回洗掉檔案夾 |
chdir | 目錄路徑 | 改變當前作業路徑 |
add_dll_director | 路徑 | 路徑添加到DLL搜索路徑 |
get_exec_path | 路徑 | 回傳用于搜索可執行檔案的目錄串列 為No,將使用 environ |
fspath | 路徑 | 回傳路徑的檔案系統表示, |
與復制移動重命名相關的函式
os.rename(src,dst),路徑重命名,將src重命名為dst,如果src和dst在不同的目錄下,則會進行剪切粘貼,這個操作邏輯和命令列是一致的,
os.renames(src,dst),可創建中間路徑的重命名,即遞回重命名,
在os包中,makedirs, renames還有removedirs這三個s結尾的檔案操作函式,都屬于遞回性質的路徑操作,其中mkdirs, renames允許目標路徑的中間路徑不存在;removedirs允許洗掉包含子路徑的路徑,
>>> os.mkdir(r'test\test') #由于.\test不存在,所以會報錯
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
FileNotFoundError: [WinError 3] 系統找不到指定的路徑,: 'test\\test'
>>> os.makedirs(r'test\test')
os.replace顧名思義即替換,相當先洗掉,再重命名,os.replace('1.txt','2.txt')等價為
os.remove('2.txt')
os.rename('1.txt','2.txt')
os.path
查看原始碼會看到,在os.py中有這樣幾行
if 'posix' in _names:
name = 'posix'
linesep = '\n'
from posix import *
#省略若干代碼
elif 'nt' in _names:
from nt import *
try:
from nt import _exit
__all__.append('_exit')
except ImportError:
pass
import ntpath as path
#,,,
該子模塊的內容相對來說用得比較多,此前曾經總結過:os.path詳解
檔案描述符操作
關于open和檔案類的內容放在了基礎功能->檔案讀寫部分,在此講解部分函式的作用,
fd為檔案描述符,一般是正整數,用于鏈接某個打開的檔案,
輸入為fd的單參函式 | |
|---|---|
close | 關閉fd |
device_encoding | 如果連接到終端,則回傳fd對應的設備,否則回傳None |
fdatasync | 強制寫入fd |
fstat | 獲取fd的狀態 |
fstatvfs | 回傳檔案的系統資訊(Winows無) |
get_blocking | 獲取檔案的阻塞模式(Windows無) |
最常用的應該是os.write(fd,str),將字串str寫入fd,
copy_file_range(src,dst,count,offset_src=None,offset_dst):從src復制count到dst,offset可設定對應的偏移量
|closerange(fd_L,fd_H)|關閉從fd_L到fd_H之間的所有檔案
Windows中沒有的:
fchmod(fd, mode):將fd的權限修改為modefchown(fd, uid, gid):將fd的所有者和組ID改為uid和gid,
fdopen與open相似,區別在于其第一個引數為整數,關于open以及更多python檔案讀寫功能的操作,請移步:【python標準庫】最深入的檔案讀寫詳解,
行程管理
os模塊中封裝了一個非常有用的函式,即os.system,實作了一個非常強大的功能——將字串轉化為命令列的命令,
>>> import os
>>> os.system('tree') #tree,輸出當前路徑下的樹狀圖
卷 檔案 的檔案夾 PATH 串列
卷序列號為 76C2-48F3
E:.
└─__pycache__
0
>>> os.system('calc') #系統打開了計算器
0
與system相對的應該是kill(sig,pid),其功能為殺死某個行程,其功能為將一個信號sig發送給某個行程pid,
此外,get_terminal_size可回傳命令列視窗的尺寸,
os.exec
這些函式用于執行一個新的程式,根據其傳入引數資料型別的不同可分為兩類,分別是l和v,前者輸入為多個引數,后者輸入為多個引陣列成的元組,
例如os.execl(pro,c1,c2,...cN)等價于os.execv(pro,(c1,c2,...cN)),
execl | execle | execlp | execlpe |
execv | execve | execvp | execvpe |
后綴e表示執行命令時,讀取特定的環境變數作為默認環境,故以execv為例,其輸入引數為os.execv(pro,tup,env),其中tup表示由各引陣列成的元組,
后綴p表示在執行命令時,使用系統環境變數path中的路徑來查找命令,
stat_result
此為狀態物件,主要作為 os.stat()、os.fstat() 和 os.lstat() 的回傳值,其常用屬性主要包括
| st_mode | 檔案模式:包括檔案型別和檔案模式位(即權限位), |
| st_ino | Unix上表示索引節點號 Windows上表示檔案索引號 |
| st_dev | 設備識別符號 |
| st_nlink | 硬鏈接數量 |
| st_uid | 檔案所有者的用戶 ID, |
| st_gid | 檔案所有者的用戶組 ID, |
| st_size | 檔案大小 |
| st_blocks | 位元組塊數,每塊512位元組,檔案稀疏時,可能小于st_size/512, |
| st_blksize | 首選 塊大小,用于提高檔案系統 I/O 效率, |
| st_rdev | 設備型別(如果是 inode 設備), |
| st_flags | 用戶定義的檔案標志位, |
與時間相關
| 訪問時間 | 修改時間 | 元資料更改時間(Unix) 創建時間(Windows) | |
|---|---|---|---|
| 秒單位 | st_atime | st_mtime | st_ctime |
| 納秒單位 | st_atime_ns | st_mtime_ns | st_ctime_ns |
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/341892.html
標籤:python
上一篇:Mongodb 使用
