python基础库pathlib学习笔记

zh_docs: pathlib

image
  • 如果以前从未使用过此模块或者不确定在项目中使用哪一个类是正确的,则 Path 总是适用的。它在运行代码的平台上实例化为一个 具体路径

  • 纯路径对象提供了不实际访问文件系统的路径处理操作, 有三种方式来访问这些类 : pathlib.PurePath, pathlib.PurePosixPath , pathlib.PureWindowsPath,无论当前正运行什么系统,都可以实例化这些类,因为它们提供的操作不做任何系统调用;

  • 具体路径是纯路径的子类。除了后者提供的操作之外,它们还提供了对路径对象进行系统调用的方法。有三种方法可以实例化具体路径: pathlib.Path, pathlib.PosixPath, pathlib.WindowsPath; 只能实例化与当前系统风格相同的类,允许系统调用作用于不兼容的路径风格可能在应用程序中导致缺陷或失败;

常用的方法和属性 说明
PurePath.name 表示最后一个路径组件的字符串,排除了驱动器与根目录(如果存在)
PurePath.suffix 最后一个组件的文件扩展名(如果存在)
PurePath.stem 最后一个路径组件,除去后缀
PurePath.parent 此路径的逻辑父路径
PurePath.parents 提供对路径逻辑祖先的访问的不可变序列
PurePath.is_absolute() -> boolean 返回此路径是否为绝对路径
PurePath.joinpath(*other) 调用此方法等同于将每个 other 参数中的项目连接在一起
PurePath.match(pattern) -> boolean 将此路径与提供的通配符风格的模式匹配
PurePath.with_name(name) 返回一个新的路径并修改 name。如果原本路径没有 name,将会引发ValueError
PurePath.with_suffix(suffix) 返回一个新的路径并修改 suffix。如果原本的路径没有后缀,新的 suffix 则被追加以代替。如果 suffix 是空字符串,则原本的后缀被移除
---------------------------------------- ------------------------------------------------------------------------------------------------
Path.cwd() 返回一个新的表示当前目录的路径对象(和 os.getcwd() 返回的相同)
Path.home() 返回一个表示当前用户家目录的新路径对象(和 os.path.expanduser() 构造含 ~ 路径返回的相同)
Path.stat() 返回此路径的信息(类似于 os.stat()
Path.chmod() 改变文件的模式和权限,和 os.chmod() 一样
Path.exists() -> boolean 此路径是否指向一个已存在的文件或目录
Path.iterdir() 当路径指向一个目录时,产生该路径下的对象的路径,可用于迭代
Path.glob() -> generator 解析相对于此路径的通配符 pattern,产生所有匹配的文件
Path.rglob() -> generator 对此目录以及所有子目录递归匹配
Path.is_dir() -> boolean
Path.is_file() -> boolean
Path.mkdir() 新建给定路径的目录
Path.open() 打开路径指向的文件,就像内置的 open() 函数所做的一样
Path.read_text() 以字符串形式返回路径指向的文件的解码后文本内容
Path.write_text() 将文件以文本模式打开,写入 data 并关闭
Path.rename() 使用给定的 target 将文件重命名,target 可以是一个字符串或者另一个路径对象
Path.replace() 使用给定的 target 重命名文件或目录。如果 target 指向现存的文件或目录,则将被无条件覆盖
Path.resolve() 将路径绝对化,解析任何符号链接。返回新的路径对象
Path.rmdir() 移除此目录,此目录必须为空的
Path.unlink() 移除此文件或符号链接。如果路径指向目录,则用 Path.rmdir() 代替
Path.touch() 将给定的路径创建为文件
  1. 遍历目录文件,批量修改文件后缀名:
from pathlib import Path

def unify_ext_with_pathlib(path):
    for fpath in Path(path).glob('*.csv'):
        fpath.rename(fpath.with_suffix('.txt'))

# -------------------------------------

import os

def unify_ext_with_os(path='.'):
    if os.path.exists(path):
        files = [file for file in os.listdir(path) if
                 file.endswith('.txt') and os.path.isfile(os.path.join(path, file))]
        for file in files:
            portion = os.path.splitext(file)  # 分离文件名与扩展名
            new_name = portion[0] + '.csv'
            os.rename(file, new_name)

2.计算文件中字符串出现的次数,每次读取 8KB内容,接受的参数既可以是文件路径也可以是类文件对象,参照 xml.etree.ElementTree 模块 ElementTree.parse 方法;

def count_nine(source, block_size=8*1024):
    close_source     = False
    # 通过判断 source 是否有 "read" 属性来判定它是不是“类文件对象”
    if not hasattr(source,'read'):  
        source = open(source, mode='r')
        close_source = True
    count = 0
    try:
        while True:
            chunk = source.read(block_size)
            if not chunk: # 当文件没有更多内容时,read 调用将会返回空字符串
                break
            count += chunk.count('9')   # 这一行要写在if之后
     finally:
        if close_source:
            source.close()
     return count
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,454评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,553评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,921评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,648评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,770评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,950评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,090评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,817评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,275评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,592评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,724评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,409评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,052评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,815评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,043评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,503评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,627评论 2 350

推荐阅读更多精彩内容