模組os讓你能夠訪問多個作業系統服務。它包含的內容很多,表10-3只描述了其中幾個最有用的函式和變數。除此之外,os及其子模組os.path
還包含多個檢視、建立和刪除目錄及檔案的函式,以及一些操作路徑的函式(例如,os.path.split
和os.path.join
讓你在大多數情況下都可忽略os.pathsep
)。在標準庫文件中,還可找到有關模組pathlib的描述,它提供了乙個物件導向的路徑操作介面。
表10-3 模組os中一些重要的函式和變數
函式/變數
描 述environ
包含環境變數的對映
system(command)
在子shell中執行作業系統命令
sep在路徑中使用的分隔符
pathsep
分隔不同路徑的分隔符
linesep
行分隔符(』\n』、』\r』或』\r\n』)
urandom(n)
返回n個位元組的強加密隨機資料
對映os.environ
包含環境變數。例如,要訪問環境變數pythonpath
,可使用表示式os.environ['pythonpath']
。這個對映也可用於修改環境變數,但並非所有的平台都支援這樣做。
變數os.sep
是用於路徑名中的分隔符。在unix/macos中,標準分隔符為/。在windows中,標準分隔符為\\
。
可使用os.pathsep
來組合多條路徑,就像pythonpath中那樣。pathsep
用於分隔不同的路徑名:在unix/macos中為:,而在windows中為;。
函式urandom(n)
使用隨系統而異的「真正」(至少是強加密)隨機源。如果平台沒有提供這樣的隨機源,將引發notimplementederror異常
。
例如,看看啟動web瀏覽器的問題。命令system可用於執行任何外部程式,這在unix等環境中很有用,因為你可從命令列執行程式(或命令)來列出目錄的內容、傳送電子郵件等。它還可用於啟**形使用者介面程式,如web瀏覽器。在unix中,可像下面這樣做(這裡假定/usr/bin/firefox
處有瀏覽器):
os.system(
'/usr/bin/firefox'
)
在windows中,可以這樣做(同樣,這裡指定的是你安裝瀏覽器的路徑):
os.system(r'c:\"program files (x86)"\"mozilla firefox"\firefox.exe'
)
請注意,這裡用引號將program files和mozilla firefox括起來了。如果不這樣做,底層shell將受阻於空白處(對於pythonpath中的路徑,也必須這樣做)。另外,這裡必須使用反斜桿,因為windows shell 無法識別斜槓。
如果你執行這個命令, 將發現瀏覽器試圖開啟名為files"\mozilla…
(空白後面的命令部分)的**。另外,如果你在idle中執行這個命令,將出現乙個dos視窗,關閉這個視窗後瀏覽器才會啟動。總之,結果不太理想。
另乙個函式更適合用於完成這項任務,它就是windows特有的函式os.startfile
。
os.startfile(r'c:\program files (x86)\mozilla firefox\firefox.exe'
)
如你所見,os.startfile
接受乙個普通路徑,即便該路徑包含空白也沒關係(無需像os.system示例中那樣用引號將program files括起)
請注意,在windows中,使用os.system
或os.startfile
啟動外部程式後,當前python程式將繼續執行;而在unix中,當前python程式將等待命令os.system
結束。
更佳的解決方案:webbrowser
函式os.system
可用於完成很多任務,但就啟動web瀏覽器這項任務而言,有一種更佳的解決方案:使用模組webbrowser。這個模組包含乙個名為open的函式,讓你能夠啟動啟動web瀏覽器並開啟指定的url。
例如,要讓程式在web瀏覽器中開啟python**(啟動瀏覽器或使用正在執行的瀏覽器,只需像下面這樣做:
import webbrowser
webbrowser.
open
('')
這將彈出指定的網頁。
os模組給我們提供我們和作業系統互動的方式
函式描述
os.getcwd()
返回當前工作目錄
os.chdir(path)
改變工作目錄
os.listdir(path=』.』)
列舉指定目錄中的檔名(』.』表示當前目錄,』…』代表上一級目錄)
os.mkdir(path)
建立單層目錄,如該目錄已存在丟擲異常
os.makedirs(path)
遞迴建立多層目錄,如果該目錄已經存在則丟擲異常。
os.remove(path)
刪除檔案
os.rmdir(path)
刪除單層目錄,如改目錄非空則丟擲異常
os.removedirs(path)
遞迴刪除目錄,從子目錄到父目錄逐層嘗試刪除,遇到目錄非空則丟擲異常。
os.rename(old,new)
將檔案old 重新命名為new,檔案和目錄都使用這條命令
os.path
模組中關於路徑常用的函式使用方法:
os.path.basename(path)
去掉目錄路徑,單獨返回檔名
os.path.dirname(path)
去掉檔名,單獨返回目錄路徑
os.path.join(path1,path2)
將path1,path2各部分組合成乙個路徑名
os.path.split(path)
分割檔名和路徑,返回(f_path,f_name)元組。如果完全使用目錄,它也會將最後乙個目錄作為檔名分離,且不會判斷檔案或者目錄是否存在。
os.path.splitext(path)
分離檔名與副檔名,返回(f_name,f_extension)元組
os.path.getsize(file)
返回指定檔案的尺寸,單位是位元組
os.path.getatime(file)
返回指定檔案最近的訪問時間(浮點型秒數,可用time模組的gmtime()或localtime()函式換算)
os.path.getctime(file)
返回指定檔案建立時間(浮點型秒數,可用time模組的gmtime()或localtime()函式換算)
os.path.getmtime(file)
返回指定檔案最新的修改時間(浮點型秒數,可用time模組的gmtime()或localtime()函式換算)返回true或false的函式
os.path.exists(path)
判斷指定路徑(目錄或檔案)是否存在
os.path.isabs(path)
判斷指定路徑是否為絕對路徑
os.path.isdir(path)
判斷指定路徑是否存在且是乙個目錄
os.path.isfile(path)
判斷指定路徑是否存在且是乙個檔案
python學習筆記(九)之os模組
os operating system os模組是python標準庫中乙個用於訪問作業系統功能的模組。使用os模組中提供的介面,可以實現跨平台訪問。當os模組被匯入後,它會自適應於不同的作業系統平台,根據不同的平台進行相應的操作。通用操作 獲取平台資訊 對目錄的操作 判斷操作 方法功能 os.sep...
Python 學習筆記總結4(Python模組)
import 到首次匯入模組的時候會發生如下3步操作 開啟模組檔案 執行模組對應的檔案,將執行過程中產生的名字都丟到模組的命名空間 在程式中會有乙個模組的名稱指向模組的命名空間去 第三方模組安裝位置,在python安裝 目錄下的lib site packages 目錄下。import time pr...
python學習筆記 os模組
上篇 模組匯入方式 import os os模組是python標準庫中的乙個用於訪問作業系統相關功能的模組,os模組提供了一種可移植的使用作業系統功能的方法。使用os模組中提供的介面,可以實現跨平台訪問。但是,並不是所有的os模組中的介面在全平台都通用,有些介面的實現是一來特定平台的,比如linux...