Python學習筆記九4 os模組

2021-09-17 02:45:37 字數 3824 閱讀 3565

模組os讓你能夠訪問多個作業系統服務。它包含的內容很多,表10-3只描述了其中幾個最有用的函式和變數。除此之外,os及其子模組os.path還包含多個檢視、建立和刪除目錄及檔案的函式,以及一些操作路徑的函式(例如,os.path.splitos.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.systemos.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...