小说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 条评论
登录 后参与评论

相关文章

来自专栏coder修行路

多进程、协程、事件驱动及select poll epoll

多线程的使用场景 IO操作不占用CPU 计算占用cpu python多线程不适合cpu密集型操作的任务,适合IO操作密集型的任务 多进程 简单的一个多进程例子:...

3939
来自专栏电光石火

jdk配置

1.右键选择 计算机→属性→高级系统设置→高级→环境变量

2139
来自专栏玄魂工作室

Python 黑帽编程 4.2 Sniffer之数据本地存储和加载

在上一节,我们完成了编写一个简易的Sniffer的第一步——数据捕获。 很多时候,我们需要将捕获的数据先保存到磁盘上,之后再使用工具或者自己编写代码来进行详细分...

2994
来自专栏爱撒谎的男孩

Struts2之动态调用

-在struts核心配置文件详解(action)中已经详细讲解了method的用法,使用这个方式可以指定Action类中的不同的方法映射请求,那么就完成了动态调...

3346
来自专栏开源优测

接口测试 23 requests基础入门二

概述 继续requests基础分享,本文主要分享以下内容: 请求头定制 POST请求 请求头定制示例 在requests中想要为请求添加自定义头信息,只需要简单...

2989
来自专栏Youngxj

解决Emlog博客程序伪静态后URL不是唯一地址的教程

2674
来自专栏码洞

自己动手实现 Shell多进程套套符

一篇技术文章如今仅仅是理论上讲得天花乱坠,却不能自己撸出东西来,那么它写的再好,也只能算纸上谈兵。继上一篇 《我们天天都在使用的套套符命令,Shell 在里面到...

1081
来自专栏前端小叙

vue项目在安卓低版本机显示空白原因

查看安卓debug,报错,可能有箭头函数语法错误,或者其他语法问题,那可能是ES6语法问题。

2291
来自专栏海天一树

小朋友学Python(17):文件

Python 提供了必要的函数和方法进行默认情况下的文件基本操作。你可以用 file 对象做大部分的文件操作。 一、打开和关闭文件 例1 (1)创建名为test...

2855
来自专栏喵了个咪的博客空间

phalapi-入门篇3(请求和返回)

#phalapi-入门篇3(请求和返回)# ? ##前言## 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. 这一小...

3785

扫码关注云+社区

领取腾讯云代金券