小说python路径操作

在日常编码中,常常会有这种操作,
在当前目录下(用户目录下)新建
一个文件,需要获取一个文件的所在目录
(父目录)等,这些都涉及路径操作,
相信大家都有使用过os.path处理过,
这个"谁用谁知道"
今天的主角pathlib才是路径操作的利器。

pathlib简介

pathlib是跨平台的、面向对象的路径操作库,
pathlib就是对os.path进行了封装,提供了一个便捷的,面向对象的操作方式,
相对os.path作为string对象众多繁琐的操作,
它才真正是for humans

python3.4+版本标准库支持
python2(2.6/2.7)版本作为第三方库

官方地址
https://pathlib.readthedocs.io/en/pep428/

常用操作

获取上级目录

os.path实现

import os
pwd = os.getcwd()
#当前文件的父路径
father_path = os.path.abspath(os.path.dirname(pwd)+os.path.sep+".")
#当前文件的前两级目录
grandfather_path = os.path.abspath(os.path.dirname(pwd)+os.path.sep+"..")

os.path获取上级目录

pathlib实现

import pathlib
pwd = pathlib.Path.cwd()
pwd.parent
pwd.parent.parent
pathlib获取上级目录
pathlib获取上级目录
用户目录/当前目录
import pathlib
pathlib.Path.home()
pathlib.Path.cwd()

对于一个跨平台的程序,如果需要在用户目录(当前目录)下的新建文件,
pathlib无需去理会平台路径分隔符的差异了(windows\,Unix/)

windows用户目录windows用户目录 linux用户目录linux用户目录

创建路径

import pathlib
cwd = pathlib.Path.cwd()
file_path = cwd / 'my.conf'
file_path = cwd.joinpath('my.conf')
创建路径创建路径
file_path.name  # 获取文件名
file_path.suffix  # 获取文件后缀
file_path.anchor  # 获取顶级目录
file_path.root    # 获取根
file_path._parts  # 路径分块组合
pathlib其他属性pathlib其他属性

文件操作

import pathlib
cwd_path = pathlib.Path.cwd()
file_path = cwd_path / 'my.conf'
file_path.write_text("debug = 1\n")
with file_path.open(mode='r') as fd:
    for line in fd:
        print(line)
print(file_path.read_text())
文件操作文件操作

重命名/修改后缀

file_path.replace(file_path.with_name('your.conf'))
file_path.replace(file_path.with_suffix('.py'))
重命名重命名

实用列子

分类统计当前目录文件数
import pathlib
import collections
collections.Counter(p.suffix for p in pathlib.Path.cwd().iterdir())
分类统计文件数分类统计文件数
显示目录树
import pathlib
def tree(directory):
    print(f'- {directory}')
    for path in sorted(directory.rglob('*')):
        depth = len(path.relative_to(directory).parts)
        spacer = '    ' * depth
        print(f'{spacer}+ {path.name}')
tree(pathlib.Path.cwd())
目录树目录树
最后修改的文件
from datetime import datetime
directory = pathlib.Path.cwd()
time, file_path = max((f.stat().st_mtime, f) for f in directory.iterdir())
print(datetime.fromtimestamp(time), file_path)
最后修改文件最后修改文件

下面的是我的公众号二维码图片,欢迎关注我。

图注:chafezhou公众号图注:chafezhou公众号



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值