1. 基本功能

建议使用pathlib模块来处理文件和文件夹,可以跨平台。pathlib提供path对象来操作,包括目录和文件。

from pathlib import Path
p =Path()     #输出格式。PosixPath('.')
p =Path('a','b','c/d')  #输出格式PosixPath('a/b/c/d')
p =Path('/etc')    #PosixPath('/etc')

2. 路径拼接和分解

使用操作符/进行路径拼接,有两种方式:① Path对象/Path对象;② Path对象/字符串,或者字符串/Path对象;也可以使用joinpath方法。

使用Parts属性进行路径分解,可以返回路径中的每一个部分

p = Path() # 当前目录,PosixPath('.')
p = p/'a'     #PosixPath('a')
p1 = 'b'/p       #PosixPath('b/a')
p2 = Path('c')      #PosixPath('c')
p3 = p2 /p1         #PosixPath('c/b/a')
print(p3.parts)      #('c', 'b', 'a')
p3.joinpath('etc','int.d',Path('.httpd'))     #PosixPath('c/b/a/etc/int.d/.httpd')

3. 获取路径

Str获取路径字符串。Bytes获取路径字符串的bytes。

p = Path('/etc')
print(str(p),bytes(p))
#/etc b'/etc'

使用parent获取父目录,使用parents获取所有父目录,使用absolute方法获取绝对路径

p = Path('/a/b/c/d')
p.parent.parent # / PosixPath('/a/b')
p.absolute().parents[len(p.absolute().parents)-1] # PosixPath('/')
print(len(p.absolute().parents)) # 4

获取文件路径的方法:
(1)name:目录的最后一个部分
(2)suffix:目录中最后一个部分的拓展名
(3)stem:目录最后一个部分,没有后缀。
(4)suffixes 返回多个扩展名列表。
(5)with_suffix(suffix):补充扩展名到路径尾部,返回新的路径,扩展名存在则无效。
(6)with_name(name):替换目录最后一个部分并返回一个新的路径。

p = Path('/etc/config/system/cf.config.gz')
print(p.name)     #cf.config.gz
print(p.suffix)      #.gz
print(p.suffixes)    #['.config', '.gz']
print(p.stem)    #cf.config
print(p.with_name('cf.config'))
#/etc/config/system/cf.config
print(p.with_suffix('.txt'))
#/etc/config/system/cf.config.txt

4. 文件操作

open(mode=’r’,buffering=-1,encoding=None,errors=None,newline=None):使用方法类似内建函数open,返回一个文件对象。
read_bytes():以’rb’读取路径相对文件,并返回二进制流。
read_text(encoding=None,errors=None):以’rt’ 方式读取路径对应文件,返回文本。
Path.write_bytes(data):以’wb’方式写入数据到路径对应文件。
write_text(data,encoding=None,errors=None):以’wt’方式写入字符串到路径对应文件。

p = Path('my_binary_file')
p.write_bytes(b'Binary file contents')
p.read_bytes()
#打印出b'Binary file contents'
p = Path('my_text_file')
p.write_text('Text file contents')
p.read_text()
#打印出'Text file contents'
p = Path('test.py')
p.write_text('hello python')
print(p.read_text())
# hello python
with p.open()as f:print(f.read(5))
# hello

5. 文件夹操作

(1)as_uri()将文件路径返回URI。
(2)mkdir(mode=0o777,parents=False,exist_ok=False)
(3)Parents,是否创建父目录,True等同于mkdir-p:False时,父目录不存在,则抛出fileNotfounderror。
(4)exist_ok参数,在3.5版本加入,flase时路径存在,抛出异常,True时候异常被忽略。
(5)Iterdir():迭代当前目录
(6)touch(mode=0o666,exist_ok=True)创建一个文件
(7)cwd():返回当前工作目录
(8)home():返回当前目录
(9)is_dir():是否是目录,目录存在返回True.
(10)is_symlink():是否是软连接
(11)is_file():是否是普通文件,文件存在返回True
(12)is_socket():是否是socket文件
(13)is_block_device():是否是块设备。
(14)is_char_device():是否是字符设备
(15)is_absolute():是否是绝对路径
(16)resolve():返回一个新的路径,这个新的路径就是当前Path的绝对路径,如果是软连接则直接被解析
(17)absolute()也可以获取绝对路径,但是推荐使用resolve()
(18)exists()目录或文件是否存在
(19)rmdir()删除空目录,没有提供判断目录为空的方法。
(20)ls():获取所有文件和文件夹

p = Path()
p.exists() # True
p /='a/b/c/d'
p.exists() # False
p.mkdir() # 报错,创建不成功
p.mkdir(parents=True) # 创建成功
p.exists() # True
p.mkdir(parents=True) # 报错,已经有了,不能再创建
p.mkdir(parents=True,exist_ok=True) # 不报错
p /='readme.txt' # p = PosixPath('a/b/c/d/readme.txt')
p.parent.rmdir() # 只剩下PosixPath('a/b/c')
p.parent.exists() # False
p.mkdir() # 报错,不存在文件
p.mkdir(parents=True) # 成功
for x in p.parents[len(p.parents)-1].iterdir():print(x,end='\t')if x.is_dir():flag = Falsefor _ in x.iterdir():flag = Truebreakprint('dir','Not Empty' if flag else 'Empyt',sep='\t')elif x.is_file():print('file')else:print('other file')

6. 通配操作

glob(pattern):通配给定的模式。
rglob(pattern):通配给定的模式,递归目录,返回一个生成器。

list(p.glob('test*')) #返回当前目录对象下的test开头的文件
list(p.glob('**/*.py'))#递归所有目录,等同于rglob,会比较费时
g = p.rglob('*.py')  #生成器
next(g)

match(pattern):返回True或False的通配函数。

Path('a/b.py').match('*.py')  #True
Path('/a/b/c.py').match('b/*.py')#True
Path('/a/b/c.py').match('a/*.py') #False    因为a文件下找不到.Py文件
Path('/a/b/c.py').match('a/*/*.py')#True
Path('/a/b/c.py').math('a/**/*.py')#True
Path('/a/b/c.py').math('**/*.py')#True

python系列13:python中Path常用功能相关推荐

  1. python正则表达式中的r与转义字符_左手用R右手Python系列13——字符串处理与正则表达式...

    原标题:左手用R右手Python系列13--字符串处理与正则表达式 杜雨,EasyCharts团队成员,R语言中文社区专栏作者,兴趣方向为:Excel商务图表,R语言数据可视化,地理信息数据可视化.个 ...

  2. csdn最新最牛最细python系列【python高阶:自动化相关技能】 python全栈自动化测试系类4-4

    目录 [python之smtplib模块发送邮件] 1.tls模式加密 2.ssl加密,默认加密端口是465 MIMEApplication模块添加附件: [python编程之ini文件处理-conf ...

  3. python文件之间的相互调用_「Python 系列」 Python 生成器函数详解

    Python的生成器函数提供了一种强大的机制来管理数据和计算资源,但是对于Python的新手来说,它们不一定直观.在本文中,我将分解生成器的机制,同时还介绍我希望是一个有启发性的示例:用于管理和流传输 ...

  4. 青少年python系列 33.python安装非内置模块

    青少年python教学视频ppt源码 青少年python系列目录_老程序员115的博客-CSDN博客 简介 python内置模及其内部的功能函数,是无法满足我们编程需求的.这时候如果有能够满足我们需要 ...

  5. 青少年python系列 2.Python简介

    青少年python系列目录_老程序员115的博客-CSDN博客 青少年python教学视频ppt源码  Python来源 Python的创始人为Guido van Rossum.1989年圣诞节期间, ...

  6. python系列之---python的起源

    根据TIOBE发布的2018年5月编程语言排行,可以看到python作为现在十分火热的语言,一直都是保持在前列. 5 月编程语言排行榜 TOP20 榜单: Top 10编程语言TIOBE指数走势(20 ...

  7. python系列教程-python前世今生以及windows下环境的安装

    文章目录 一.python的前世今生 1.1 Python的起源 二.为什么要学习python 2.1.从语言排行榜上看 三.python的安装 3.1 python下载 3.2 自定义安装路径,以及 ...

  8. [每日一讲] Python系列:Python概述

    Python 序章 概述 Python 是弱类型动态解释型的面向对象高级语言,其具备面向对象的三大特点:封装.继承.多态.Python 代码运行时,其有一个编译过程,通过编译器生成 .pyc 字节码 ...

  9. python系列-认识python

    1.python是怎么出现的 2.python的发展 3.Python的用途 目前python语言可谓炙手可热,开发,测试.运维还有人工智能.数据分析等板块都是他们的影子. python是什么?pyt ...

  10. Datawindow在PowerBuilder中的常用功能和内容

    一.数据窗口中的每一个字段有一个序号,该序号是数据窗口的data   source中排列的序号,在程序中可用序号来对字段进行访问.如:dw_1.Modify( "#3.width   =   ...

最新文章

  1. js字母大小写字母转换
  2. Rocksdb 的 MergeOperator 简单使用记录
  3. 我和我的Android
  4. 串口流控--软件流控与硬件流控
  5. 算法导论读书笔记-第十九章-斐波那契堆
  6. 让容器跑得更快:CPU Burst 技术实践
  7. C++获取链表的大小的实现算法(附完整源码)
  8. Python将序列分解为单独的变量
  9. 深入理解 JVM Class文件格式(三)
  10. 状态栏编程(显示系统时间和进度条)
  11. spark ui 上schedulingDelay理解
  12. xp速度比服务器系统,让Windows XP跑得更快更稳
  13. mac 硬盘读写速度测试 软件,使用适用于Windows / Mac的最佳10工具开始测试硬盘速度...
  14. 苹果低头了,但不想丢掉它的皇冠
  15. AR互动大屏项目实战
  16. 安装算量软件哪个速度快效率高?
  17. 第一代程序员王小波 (送书活动)
  18. 引导路径动画 (1)
  19. 全景拍摄不推荐使用全景相机的背后原因
  20. 谈谈用户留存率为何如此重要?

热门文章

  1. 27个精美的时间线(含源代码)
  2. 完全卸载SQL server 2005的方法
  3. 【重磅】聚焦券商终端业务,博睿数据发布新一代券商终端核心业务体验可观测平台
  4. python下载和安装教程视频_Maya课时:Python的下载与安装视频教程_翼狐网
  5. php easyui filebox,easyui fileBox 获取文件名和添加下拉框
  6. ![CDATA[的web使用简单说明
  7. 元学习提高黑盒对抗攻击
  8. 电脑无法从U盘启动的问题解决
  9. 【Linux学习笔记04】Linux常用命令
  10. 2018阿里巴巴秋招java笔试题做题记录