小说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/

常用操作

1

获取上级目录

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获取上级目录

2

用户目录/当前目录

import pathlib
pathlib.Path.home()
pathlib.Path.cwd()

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

windows用户目录

linux用户目录

3

获创建路径

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其他属性

4

文件操作

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())

文件操作

5

重命名/修改后缀名

file_path.replace(file_path.with_name('your.conf'))
file_path.replace(file_path.with_suffix('.py'))

重命名

实用例子

1

请分类统计目录文件数目

import pathlib
import collections
collections.Counter(p.suffix for p in pathlib.Path.cwd().iterdir())

分类统计文件数

2

显示目录树

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())

目录树

3

找出最后修改的文件

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(gh_5b8f0c59b682)

原文发表时间:2018-05-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端新视界

Yeoman 官网教学案例:使用 Yeoman 构建 WebApp

STEP 1:设置开发环境 ? 与 Yeoman 的所有交互都是通过命令行。Mac 系统使用 terminal.app,Linux 系统使用 shell,win...

1767
来自专栏开源优测

Robot Framework | 02 从抛弃RIDE开始创建你的RFS测试

概述 大多数情况下,我们用RobotFramework时,一般基于其图形界面的RIDE来编辑、管理、执行用例。 今天我们分享下基于非编辑器模式的RobotFra...

3974
来自专栏猿人谷

有趣的Linux命令行效果

有趣的Linux命令行功效 1. Linux"sl"命令行 尽管"sl"代表了"蒸汽机机头",但它是用来提醒那些命令行控们别把"ls"打成了"sl"。让我们看看...

1848
来自专栏开源优测

Robot Framework | 02 从抛弃RIDE开始创建你的RFS测试

概述 大多数情况下,我们用RobotFramework时,一般基于其图形界面的RIDE来编辑、管理、执行用例。 今天我们分享下基于非编辑器模式的RobotFra...

3089
来自专栏北京马哥教育

一键将 Python2 代码自动转化为 Python3

将下边面的 reg 代码复制另存为“python 2to3.reg”文件,然后双击此文件,导入到注册表。

640
来自专栏林德熙的博客

VisualStudio 使用三个方法启动最新 C# 功能 第一个方法第二个方法第三个方法

本文告诉大家如何在 VisualStudio 打开最新的 C#,现在的微软更新 C# 很快,那么如何让 VisualStudio 在项目使用最新的

451
来自专栏生信宝典

一网打进Linux下那些查找命令

查找是我们每天都在做的事情,早上醒来找下手机,出门之前查下公交,坐下之后查下资料,分析数据查下模式。 查找文件,查找信息,查找错误是应用起来更为具体的一些工作,...

49010
来自专栏walterlv - 吕毅的博客

命令“"xxx.exe" xxx”已退出,代码为 3/123/9009。VS 的这些编译错误代码代表了什么意思?

发布于 2018-03-09 00:44 更新于 2018-04...

401
来自专栏玄魂工作室

怎样学Python之第十九课 高级文件输入和输出

欢迎回来!如果您还记得以前的几次培训课程,我们介绍了基本的文件I/O。 这是使我们的脚本适用于现实生活场景中的一个非常重要的步骤,今天我们将要深入这些概念。 我...

3055
来自专栏游戏开发那些事

【游戏开发】Excel表格批量转换成CSV的小工具

  在工作的过程中,我们有时可能会面临将Excel表格转换成CSV格式文件的需求。这尤其在游戏开发中体现的最为明显,策划的数据文档大多是一些Excel表格,且不...

662

扫码关注云+社区