收集了一些關於os庫的用法,整理歸納一下,方便使用
import os
# 系統操作
print
(os.sep)
# 獲取當前系統的路徑分隔符
print
(os.name)
# 獲取當前使用的工作平台
print
(os.getenv(
'path'))
# 獲取名為 path 的環境變數
print
(os.getcwd())
# 獲取當前的路徑
print
(os.environ[
'path'])
# 可以返回環境相關的資訊 不傳參時,以字典的方式返回所有環境變數
# 呼叫系統命令
os.system(command)
# 將linux命令傳入這裡,就可以執行 execute the command in a subshell.
# 目錄操作 - 增刪改查
dir=
"/opt/"
listdir_opt = os.listdir(
dir)
# 返回指定目錄下的所有檔案何目錄名
print
(listdir_opt)
os.mkdir(
"/opt/os-make/"
)# 建立乙個目錄,只建立乙個目錄檔案
os.mknod(
"/root/python-test.txt"
)# 建立乙個檔案
os.rmdir(
"/opt/ooo/"
)# 刪除乙個空目錄,若目錄中有檔案則無法刪除
os.remove(
"/tmp/test.txt"
)# 用於刪除檔案,若是目錄,則丟擲 isdirectoryerror 異常
os.makedirs(
"/opt/os-make-again/os-make-again-again"
)# 可以生成多層遞迴目錄,如果目錄全部存在,則建立目錄失敗
os.removedirs(
)# 從最下級目錄開始,逐級刪除指定路徑,遇到非空目錄即停止
os.chdir(
"/tmp/"
)# 改變當前目錄,到指定目錄
os.rename(
"/opt/ooo/"
,"/opt/aaa/"
)# 重新命名目錄名或者檔名。重新命名後的檔案已存在,則重新命名失敗。
"""os.rename()函式的作用是將檔案或路徑重新命名,一般呼叫格式為os.rename(src, dst),即將src指向的檔案或路徑重新命名為dst指定的名稱。
注意,如果指定的目標路徑在其他目錄下,該函式還可實現檔案或路徑的「剪下並貼上」功能。但無論直接原地重新命名還是「剪下貼上」,中間路徑都必須要存在,否則就會丟擲filenotfounderror異常。如果目標路徑已存在,windows 下會丟擲fileexistserror異常;linux 下,如果目標路徑為空且使用者許可權允許,則會靜默覆蓋原路徑,否則丟擲oserror異常,
和上兩個函式一樣,該函式也有對應的遞迴版本os.renames(),能夠建立缺失的中間路徑。
注意,這兩種情況下,如果函式執行成功,都會呼叫os.removedir()函式來遞迴刪除源路徑的最下級目錄。
"""# 判斷
if os.path.exists(
"/root"):
print
("/root 目錄存在!"
)if os.path.isfile(
"/root"):
print
("/root 檔案存在!"
)if os.path.isdir(
"/etc"):
print
("/etc 目錄存在!"
)if os.path.isabs(
"/etc"):
print
("/etc 是絕對路徑!"
)# path模組
"""os.path中的函式基本上是純粹的字串操作。換句話說,傳入該模組函式的引數甚至不需要是乙個有效路徑,該模組也不會試圖訪問這個路徑,而僅僅是按照「路徑」的通用格式對字串進行處理。
"""path =
"/etc/passwd"
filename = os.path.basename(path)
# 返回檔名,如果是目錄則為空 實際上是傳入路徑最後乙個分隔符之後的子字串,也就是說,如果最下級目錄之後還有乙個分隔符,得到的就會是乙個空字串
filedir = os.path.dirname(path)
# 返回的是最後乙個分隔符前的整個字串
filesplit = os.path.split(path)
# 將傳入路徑以最後乙個分隔符為界,分成兩個字串,並打包成元組的形式返回
"""類似的
os.path.splitext("ooo.txt")
('ooo', '.txt')
"""filesize = os.path.getsize(path)
# 獲取檔案的大小 相當於 ls -l 單位為bytes
fileabspath = os.path.abspath(path)
# 獲取檔案的絕對路徑
filejoin = os.path.join(path,
"test.txt"
)# 拼接新的路徑
"""如果傳入路徑中存在乙個「絕對路徑」格式的字串,且這個字串不是函式的第乙個引數,那麼其他在這個引數之前的所有引數都會被丟棄,餘下的引數再進行組合。更準確地說,只有最後乙個「絕對路徑」及其之後的引數才會體現在返回結果中。
例子如下:
os.path.join("just", "do", "/opt/", "it")
結果: /opt/it
os.path.join("just", "do", "/opt/", "python", "dot", "/root", "com")
結果:/root/com
"""print
(filename+
"\n"
+filedir+
"\n"
+str
(filesize)
+"\n"
+fileabspath+
"\n"
+filejoin+
"\n"
)
以上模組和函式的用法已經做了一些說明,理解起來也不難,下面再介紹乙個函式os.walk()
import os
for item in os.walk(
"/opt/test-walk/"):
print
(item)
程式輸出結果
(
'/opt/test-walk/',[
'a',
'b',
'c'],[
])('/opt/test-walk/a',[
],['a.txt'])
('/opt/test-walk/b',[
'b2'],
)('/opt/test-walk/b/b2',[
],['b.txt'])
('/opt/test-walk/c',[
],)
目錄結構
[root@open-1 python_scripts]
# tree /opt/test-walk/
/opt/test-walk/
├── a
│ └── a.txt
├── b
│ └── b2
│ └── b.txt
└── c
4 directories, 2 files
由上面的結果可以大致明白os.walk()函式的作用:這個函式需要傳入乙個路徑作為引數,函式的作用是在該路徑為根節點的目錄樹中游走,對樹中的每個目錄生成乙個由(dirpath, dirnames, filenames)三項組成的三元組。其中,dirpath是乙個指示這個目錄路徑的字串,dirnames是乙個dirpath下子目錄名(除去 . 和 ..)組成的列表,filenames則是由dirpath下所有非目錄的檔名組成的列表。簡單來說,就是把目標路徑下的所有目錄和檔案都列出來,結合tree命令的結果,就更好理解這個函式的作用了. python常用模組之os模組
os模組可以處理檔案和目錄這些日常手動需要做的操作,比如常用的刪除檔案等。此外,os不受平台限制,非常方便。常用功能 1 os.name 顯示當前使用的平台 import os print os.name nt windows2 os.getcwd 顯示當前python指令碼工作路徑 print o...
python常用模組之os
os模組是python與作業系統進行互動的乙個介面 os模組中的方法os.getcwd 獲取當前工作目錄,即當前python指令碼工作的目錄路徑 os.chdir dirname 改變當前指令碼工作目錄 相當於shell下cd os.curdir 返回當前目錄 os.pardir 獲取當前目錄的父目...
常用模組 os模組
主要用於與計算機系統互動 print os.getcwd 獲取當前工作目錄 f python exe day20 os.chdir f python exe day20 pack 更改當前工作目錄 print os.getcwd f python exe day20 pack print os.cu...