亚洲综合图片区自拍_思思91精品国产综合在线观看_一区二区三区欧美_欧美黑人又粗又大_亚洲人成精品久久久久桥本

環(huán)球微資訊!Python模塊pathlib操作文件和目錄操作總結

2022-12-07 16:11:18 來源:51CTO博客

前言

目前大家常用的對于文件和操作的操作使用??os.path??較多,比如 獲取當前路徑??os.getcwd()??,判斷文件路徑是否存在??os.path.exists(folder)??等等。


(資料圖)

在Python3.4開始,官方提供了??pathlib 面向對象的文件系統(tǒng)路徑??,核心的點在于??面向對象??, 這也是??os.path??和??pathlib??的本質區(qū)別

推進使用 pathlib

為什么推進使用 pathlib 呢?

來看個對比演示

>>> import os>>> import pathlib>>> p1 = os.getcwd()>>> p2 = pathlib.Path.cwd()>>> print(p1, type(p1))/data/colinspace/temp >>> print(p2, type(p2))/data/colinspace/temp 

看到區(qū)別在于 os 返回的是??字符串??, 而 pathlib.Path 返回的是??類??, 這個類提供了很多有用的關于文件和文件夾的內置方法

>>> p2.p2.absolute(         p2.home(             p2.joinpath(         p2.read_bytes(       p2.stemp2.anchor            p2.is_absolute(      p2.lchmod(           p2.read_text(        p2.suffixp2.as_posix(         p2.is_block_device(  p2.lstat(            p2.relative_to(      p2.suffixesp2.as_uri(           p2.is_char_device(   p2.match(            p2.rename(           p2.symlink_to(p2.chmod(            p2.is_dir(           p2.mkdir(            p2.replace(          p2.touch(p2.cwd(              p2.is_fifo(          p2.name              p2.resolve(          p2.unlink(p2.drive             p2.is_file(          p2.open(             p2.rglob(            p2.with_name(p2.exists(           p2.is_reserved(      p2.owner(            p2.rmdir(            p2.with_suffix(p2.expanduser(       p2.is_socket(        p2.parent            p2.root              p2.write_bytes(p2.glob(             p2.is_symlink(       p2.parents           p2.samefile(         p2.write_text(p2.group(            p2.iterdir(          p2.parts             p2.stat(# 檢查文件夾是否存在>>> p2.exists()True# 判斷是否是文件is_file/文件夾is_dir>>> p2.is_dir()True# 返回父級目錄>>> p2.parentPosixPath("/data/colinspace")

pathlib 優(yōu)勢舉例演示

1、遍歷文件夾更快,因為它返回的是 generator 生成器,節(jié)省內存

# 返回生成器>>> p2.iterdir()>>> list(p2.iterdir())[PosixPath("/data/colinspace/temp/file.txt"), PosixPath("/data/colinspace/temp/redis-rdr"), PosixPath("/data/colinspace/temp/django_task"), PosixPath("/data/colinspace/temp/20210923"), PosixPath("/data/colinspace/temp/java-service-check.py")]

2、支持通配符,類似 find正則匹配查找特定類型的文件

>>> p2.glob("*.py")>>> list(p2.glob("*.py"))[PosixPath("/data/colinspace/temp/java-service-check.py"), PosixPath("/data/colinspace/temp/demo_paramiko.py"), PosixPath("/data/colinspace/temp/demo_consul.py"), ... ...]

3、高效的讀寫文件操作

>>> p3 = pathlib.Path("1207_test.txt")# 文件不存在的時候,寫入是會默認創(chuàng)建>>> p3.write_text("Hello World\nHello Pathlib!")26>>> p3.read_text()"Hello World\nHello Pathlib!"# 也可以使用 with 進行讀取>>> with p3.open() as f:...     f.readlines()...["Hello World\n", "Hello Pathlib!"]
Path.open(mode="r", buffering=-1, encoding=None, errors=None, newline=None) 打開文件,類似內置的open函數(shù)Path.read_bytes() 按照二進制模式讀取Path.write_bytes(data)

將文件以二進制模式打開,寫入 data 并關閉;一個同名的現(xiàn)存文件將被覆蓋。

Path.write_text(data, encoding=None, errors=None, newline=None)

將文件以文本模式打開,寫入 data 并關閉;同名的現(xiàn)有文件會被覆蓋。 可選形參的含義與 open() 的相同。

Path.read_text() 按照文件字符串模式讀取

其他的方法可以參考官方文檔 https://docs.python.org/zh-cn/3/library/pathlib.html

Pathlib的特殊性

pathlib同步的考慮了 Windows 路徑的特性,提供了帶 I/O 操作的和不帶 I/O 操作的類,官方定義叫做 具體路徑(帶I/O)和純路徑(不帶I/O)

只想操作路徑但不想實際訪問操作系統(tǒng),實例化一個純路徑是必須的。比如在Linux設備上操作Windows路徑,那么應該實例化一個 PureWindowsPath 而不是 WindowsPath

os.path 和 pathlib 相同函數(shù)對應表

os/os.path

pathlib

os.path.abspath()

Path.absolute()

os.path.realpath()

Path.resolve()

os.chmod()

Path.chmod()

os.mkdir()

Path.mkdir()

os.makedirs()

Path.mkdir()

os.rename()

Path.rename()

os.replace()

Path.replace()

os.rmdir()

Path.rmdir()

os.remove(), os.unlink()

Path.unlink()

os.getcwd()

Path.cwd()

os.path.exists()

Path.exists()

os.path.expanduser()

Path.expanduser() 和 Path.home()

os.listdir()

Path.iterdir()

os.path.isdir()

Path.is_dir()

os.path.isfile()

Path.is_file()

os.path.islink()

Path.is_symlink()

os.link()

Path.hardlink_to()

os.symlink()

Path.symlink_to()

os.readlink()

Path.readlink()

os.path.relpath()

PurePath.relative_to()

os.stat()

Path.stat(), Path.owner(), Path.group()

os.path.isabs()

PurePath.is_absolute()

os.path.join()

PurePath.joinpath()

os.path.basename()

PurePath.name

os.path.dirname()

PurePath.parent

os.path.samefile()

Path.samefile()

os.path.splitext()

PurePath.stem and PurePath.suffix

原文鏈接 ??Python模塊pathlib操作文件和目錄操作總結??

標簽: 是否存在 目錄操作 面向對象的

上一篇:天天觀焦點:A面編程高手 B面清雅女神:51CTO高級講師汪翠從入行開發(fā)到實現(xiàn)在滬財務自由的一路經(jīng)歷!快來圍觀
下一篇:全球滾動:Shell中色彩處理