<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
os是“operating system”的縮寫,os模組提供各種 Python 程式與作業系統進行互動的介面,使用os模組,一方面可以方便地與作業系統進行互動,另一方面頁可以極大增強程式碼的可移植性
注意 一定要使用 import os 而不是 from os import * 。這將避免內建的 open() 函數被 os.open() 隱式替換掉,因為它們的使用方式大不相同。
import os
os.getcwd() 獲取當前工作路徑
os.getcwd()
os.chdir() 切換工作路徑
# 將工作目錄切換到'D:/Pycharm' os.chdir('D:/Pycharm') print(os.getcwd()) #D:Pycharm
os.environ 獲取所有的環境變數,
os.environ
os.getlogin()返回通過控制終端程序進行登入的使用者名稱
os.getlogin()
os.name 返回python執行的環境系統
os.name ''' 返回值的意思 posix Linux 和 Mac OS nt Windows java Java 虛擬機器器環境 '''
當資料夾已經存在時會報錯FileExistsError
建立多級的資料夾會報錯FileNotFoundError
# 在當前目錄下建立一個名為test的資料夾 os.mkdir('test') # 報錯內容 # FileExistsError: [WinError 183] 當檔案已存在時,無法建立該檔案。: 'test'
# 建立a資料夾,並且在a資料夾下建立b資料夾 os.makedirs('a/b')
如果如果刪除的資料夾非空OSError: [WinError 145] 目錄不是空的。'filename'
# 刪除資料夾a os.rmdir('a')
工作方式類似於 rmdir(),不同之處在於,如果成功刪除了末尾一級目錄,removedirs() 會嘗試依次刪除 path 中提到的每個父目錄,直到丟擲錯誤為止(但該錯誤會被忽略,因為這通常表示父目錄不是空目錄)
# 刪除資料夾 資料夾 a及子資料夾b os.removedirs('a/b')
# 刪除檔案a.txt os.remove('a.txt')
src 原路徑,dst修改後的命名
只能重新命名原路徑 src
最後的路徑或檔案的名字,中間路徑都必須要存在,否則就會丟擲FileNotFoundError
# 將檔名b修改成檔名c os.rename('a/b','a/c') # 檔案目錄: a/c c資料夾是a資料夾的子資料夾 # 將檔案c移動到和a同級目錄下 os.rename('a/c','c') # 檔案目錄: a/c c資料夾是a資料夾的子資料夾 # 將檔案c移動到和a同級目錄下並改名為'newname' os.rename('a/c','newname') # 檔案目錄: a/c/w.txt # 將檔案w.txt修改成ww.txr os.rename('a/c/w.txt','a/c/ww.txt') # 同樣也可以移動檔案並重名的方式一樣,用法和移動檔案並重名的方式一樣
os.renames(old, new)遞迴重新命名目錄或檔案。工作方式類似 rename(),除了會首先建立新路徑所需的中間目錄。重新命名後,將呼叫 removedirs() 刪除舊路徑中不需要的目錄。
# 重新命名可以重新命名中間路徑(實際上是,先新建新的目錄,然後判斷原目錄是否可以刪除,如果可以刪除,就刪除) os.renames('a/b/a.txt','a/c/aaa.txt')
os.path中的函數基本上是純粹的字串操作。換句話說,傳入該模組函數的引數甚至不需要是一個有效路徑,該模組也不會試圖存取這個路徑,而僅僅是按照“路徑”的通用格式對字串進行處理
os.path 獲取當前環境的路徑
os.path
os.path.abspath(path) 返回路徑 path 的絕對路徑
# 根據相對路徑返回絕對路徑 print(os.path.abspath('a/c/aaa.txt'))
os.path.exists(path) 判斷該路徑或檔案是否存在
path:路徑
返回布林值,True,False
# 檢查檔案是否存在 print(os.path.exists('a/c')) # 檢查aaa.txt檔案是否存在 print(os.path.exists('a/c/aaa.txt'))
os.path.getatime(path)返回path的最後存取時間,返回的時間為秒(時間戳),可以利用tiem轉換成常用的時間格式
# 返回檔案a最後的存取時間 print(os.path.getatime('a')) t = os.path.getatime('a') # 獲取時間戳 tupTime = time.localtime(t) # 將時間戳轉換成本地時間 stadardTime = time.strftime("%Y-%m-%d %H:%M:%S", tupTime) # 轉換成對應的時間格式 print(stadardTime) # 2022-09-18 11:44:28
os.path.getctime(path) 在windos下獲取檔案的建立時間,在Unix返回的是最後的修改時間
# 獲取aaa.txt檔案的建立時間(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 拆分為一對,即 (head, tail),其中,tail 是路徑的最後一部分,而 head 裡是除最後部分外的所有內容。tail 部分不會包含斜槓,如果 path 以斜槓結尾,則 tail 將為空。如果 path 中沒有斜槓,head 將為空。如果 path 為空,則 head 和 tail 均為空。
返回的部分是一個元組裡面由兩個元素
a = os.path.split('D:/aa/bb') print(type(a)) # <class 'tuple'> print(a) # ('D:/aa', 'bb') 頭部和尾部 # 當最後為'/‘時 a = os.path.split('D:/aa/bb/') print(a) # ('D:/aa/bb', '') 尾部為空 # 當路徑path中沒有路徑的時候 a = os.path.split('aa') print(a) # ('', 'aa') # 頭部為空 # 當傳入的路徑為空時 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() 開啟檔案的一系列操作
用法和基本的open函數很類似
註解 本函數適用於底層的 I/O。常規用途請使用內建函數 open(),該函數的 read() 和 write() 方法(及其他方法)會返回 檔案物件。要將檔案描述符包裝在檔案物件中,請使用 fdopen()。
os.open(file, flags[, mode]) ''' file 檔名 flags 模式 mode 可選引數, mode 設定其許可權狀態 '''
flags – 該引數可以是以下選項,多個使用 “|” 隔開:
在寫入檔案時不能直接寫入字串否則會報錯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) # 關閉檔案 os.close(fd) print("關閉檔案成功!!")
最後的補充
最後如果忘記了os的用法可以使用內建的 dir()
和 help()
函數來檢視函數的用法
dir()
返回一個列表包括 os模組的所有函數名
print(dir(os))
help()
返回所有os模組的所有內容
print(help(os))
這樣的結果看著確實有點不太人性化
使用help
函數檢視具體的函數使用方法
print(help(os.getcwd)) print(help('os.getcwd')) # 使用字串也可以
返回函數的作用
到此這篇關於Python必知必會之os模組的文章就介紹到這了,更多相關Python os 模組詳解內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45