os 模組是 Python 標準庫中實現跨平台系統操作的核心。無論你在 Windows、Linux 或 macOS,透過 os 模組撰寫的程式碼都能無縫移植。本文整理最高頻使用的函數與常數,附上說明與適用場景,供開發者隨時查閱。
| 函數/常數 | 用途 | 範例/備註 |
|---|---|---|
os.sep | 路徑分隔符(跨平台) | Windows: \\;Linux/macOS: / |
os.name | 識別作業系統平台 | 'nt' (Windows)、'posix' (Linux/Unix) |
os.getcwd() | 取得目前工作目錄 | 回傳字串路徑 |
os.chdir(path) | 切換工作目錄 | 相對/絕對路徑皆可 |
os.listdir(path) | 列出目錄內容 | 回傳檔名/目錄名列表(不含路徑) |
os.remove(path) | 刪除檔案 | 目錄請用 os.rmdir 或 shutil.rmtree |
os.mkdir(path) / os.makedirs(path) | 建立目錄 | makedirs 可遞迴建立多層 |
os.rename(src, dst) | 重命名/移動檔案 | 跨檔案系統可能失敗,建議用 shutil.move |
os.path 子模組)| 函數 | 功能 | 範例 |
|---|---|---|
os.path.join(path, *paths) | 智慧型路徑拼接(自動處理分隔符) | os.path.join('a', 'b') -> 'a/b' |
os.path.split(path) | 分割目錄與檔名 | ('dir', 'file.txt') |
os.path.splitext(path) | 分離副檔名 | ('file', '.txt') |
os.path.basename(path) | 取得檔名 | 'file.txt' |
os.path.dirname(path) | 取得目錄路徑 | '/home/user' |
os.path.abspath(path) | 轉為絕對路徑 | 相對路徑轉絕對 |
os.path.normpath(path) | 規範化路徑(處理 ..、重複分隔符) | 'a//b/../c' -> 'a/c' |
os.path.exists(path) | 判斷路徑是否存在 | 檔案/目錄皆可 |
os.path.isfile(path) / isdir(path) | 判斷是檔案/目錄 | 不存在回傳 False |
os.path.getsize(path) | 取得檔案大小(位元組) | 目錄回傳 0 |
os.getenv(key) / os.environ.get(key):讀取環境變數(找不到回傳 None)os.putenv(key, value):設定環境變數(僅影響當前程序)os.system(cmd):執行 Shell 指令(回傳狀態碼,不捕獲輸出,建議改用 subprocess)os.linesep:目前平台換行符(Windows \r\n、Linux \n、macOS \r)os.curdir ('.') / os.pardir ('..'):目前/上層目錄常數# 安全讀取環境變數並提供預設值
debug = os.getenv('DEBUG', 'false').lower() == 'true'
# 遞迴列出所有 .py 檔案
import glob
py_files = glob.glob('**/*.py', recursive=True)
# 取得專案根目錄(假設此檔在 project/sub/module.py)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
善用 os 與 os.path,能寫出乾淨、可攜帶的系統層級 Python 程式碼。更複雜的檔案操作請參考 pathlib (Python 3.4+) 與 shutil 模組。