pathlib介紹-比os.path更好的路徑處理方式

我們先來聊下三種操作系統windows、Mac 和 Linux,

Windows filenames:C:some_foldersome_file.txtMost other operating systems:/some_folder/some_file.txt

如上所示,帶來的一個編程小麻煩就是不同的操作系統,文件連接所用正反斜線是不一致的。

這是一個有趣的歷史:early 1980』s computer history

現在,python3有一個pathlib的模塊,可以讓你優雅的工作。

錯誤的方式:手動拼接

data_folder = "source_data/text_files/"file_to_open = data_folder + "raw_data.txt"f = open(file_to_open)print(f.read())

這樣寫,你不能讓每個操作系統都能順利執行。並會讓其他程序員用懷疑的眼光看著你。

舊的解決方式:os.path模塊

import os.pathdata_folder = os.path.join("source_data", "text_files")file_to_open = os.path.join(data_folder, "raw_data.txt")f = open(file_to_open)print(f.read())

此代碼可以在各個平台順利運行,但是反覆使用os.path.join很啰嗦,重點是一點都不優雅!

os.path有很多功能,但是比較繁瑣,導致大家雖然都知道,但是就是懶得用。

更好解決方式:pathlib模塊

python3.4+ 都自帶標準庫pathlib,所以你不需要再通過pip3 安裝,這很cool

你只需要這樣

from pathlib import Pathdata_folder = Path("source_data/text_files/")file_to_open = data_folder / "raw_data.txt"f = open(file_to_open)print(f.read())

至此,你用一個非常優雅的方式解決了一個重大問題,但是你以為pathlib僅此而已了嗎?

你可用它讀文件,而不需要open()

from pathlib import Pathdata_folder = Path("source_data/text_files/")file_to_open = data_folder / "raw_data.txt"print(file_to_open.read_text())

更cool的是,pathlib可以讓你常用的文件及路徑操作變得極為簡單快捷

from pathlib import Pathfilename = Path("source_data/text_files/raw_data.txt")print(filename.name)# prints "raw_data.txt"print(filename.suffix)# prints "txt"print(filename.stem)# prints "raw_data"if not filename.exists(): print("Oops, file doesnt exist!")else: print("Yay, the file exists!")

同學們,快去嘗試吧。這裡是官方地址:

11.1. pathlib - Object-oriented filesystem paths - Python 3.6.4 documentation

參考文章:

11.1. pathlib - Object-oriented filesystem paths - Python 3.6.4 documentation

medium.com/@ageitgey/py

推薦閱讀:

黃哥Python 告訴你類到底是一個啥東東。
在python 中如何將 list 轉化成 dictionary
vim怎麼匹配多個相同字元並替換成字元加數字遞增的形式?
Python的靜態方法和類成員方法
如何使用爬蟲獲取新加坡PSI信息?

TAG:Python | Python3x | Python库 |