Python 寫指令碼常用模組OS基礎用法

2021-10-22 20:12:00 字數 4193 閱讀 4624

收集了一些關於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...