python03-标准库 第三方库-pathlib模块

news/2024/9/17 23:53:18/文章来源:https://www.cnblogs.com/kakafa/p/18374490




  • python标准库:Python自带的一组模块和库,这些模块和库提供了Python编程所需的基础功能和工具
    https://docs.python.org/zh-cn/3/library/index.html?eqid=8ca0b3ea000067990000000264800802

  • Python包索引:即PyPI(Python Package Index),是一个仓库,存放了许多可以通过pip安装的独立于标准库之外的第三方的Python库,PyPI是一个官方的包索引 https://pypi.org/ 但是也可以有自定义的包索引。

  • 使用Python包索引,可以用pip工具,它是Python的一个包管理器,可以用来安装、升级和卸载Python包。使用pip时,你可以指定包的来源,默认是PyPI,但你也可以指定其他包索引。




pathlib模块




  • pathlib模块‌:是面向对象的文件系统路径操作库,提供接口来处理文件路径。Path是主类

  • Path:Path对象表示文件或目录的路径,Path类会自动选择PosixPath或WindowsPath,具体取决于我们的操作系统


😄 win系统创建path对象
from pathlib import Path# 创建一个指向当前目录的Path对象
current_path = Path('.')
print(current_path.absolute()) path = Path()
print(path.absolute())# 输出d:\py_related\HelloWorldcurrent_path1 = Path("D:\\py_related\\test")
print(current_path1)
# 在windows中绝对路径还可以这么写:
current_path2 = Path(r"D:\py_related\test")
print(current_path2)


问:在Python的pathlib模块中,‌Path()和Path('.')的区别?

答:

  • Path():‌Path()表示当前工作目录的Path对象或一个空的Path对象。取决于具体的Python版本和解释器行为,常为后者。
  • Path('.'):‌Path对象表示当前目录。‌这里的.是一个特殊的目录名,‌代表“当前目录”。‌
  • 总之,‌Path('.')是获取当前工作目录的明确和推荐的方式,‌如果你想要一个表示当前工作目录的Path对象,‌请使用Path('.')或Path.cwd()。‌
  • 从上面代码来看我的python版本3.12.5 ,其Path()和Path('.')都表示当前工作目录

😄使用除法操作连接目录和文件名:
from pathlib import Path# 创建Path对象表示目录
# 只是创建了路径对象,并没有真的在文件系统中创建这个目录
parent_dir = Path(r"D:\py_related\test\new_directory")# 创建Path对象表示文件名
file_name = Path("example.txt")# 使用除法操作连接目录和文件名
full_path = parent_dir / file_name# 输出完整的路径
print(full_path)


😄home() exists() is_file() is_dir()
from pathlib import Path# 返回当前用户的home目录
print(Path.home())  # C:\Users\zdn# new_directory这个目录不存在还没有创建
path = Path(r"D:\py_related\test\new_directory")
print(path.exists())  # False
print(path.is_file())  # False
print(path.is_dir())  # False 因为目录不存在所以这里的结果也是假# D:\py_related\test这个目录是存在的
path2 = Path(r"D:\py_related\test")
print(path2.exists())  # True
print(path2.is_file())  # False
print(path2.is_dir())  # True

😄name stem suffix parent属性 .absolute()方法 with_suffix(),with_stem(),with_name()
from pathlib import Path# 这个路径不存在 现编的
path = Path(r"ecommerce\test.py")
print(path.exists())  # Falseprint(path.name)  # test.py
print(path.stem)  # test
print(path.suffix)  # .py
print(path.parent)  # ecommercepath = path.with_name("file.txt")
print(path)  # ecommerce\file.txt
print(path.absolute())  # absolute()获取path对象的绝对路径,并不一定真的存在
# d:\py_related\HelloWorld\ecommerce\file.txtpath = path.with_suffix(".py")
print(path)  # ecommerce\file.pypath = path.with_stem("exam")
print(path)  # ecommerce\exam.py

😄rename()

from pathlib import Path# 这个路径真实存在
path = Path(r"D:\py_related\test")# rename()方法必须是存在的路径,实际上也会重新命名;如路径不存在会报错FileNotFoundError
path.rename(r"D:\py_related\test2")print(path) # 输出D:\py_related\test  path仍然是test而不是test2???


😄iterdir()

from pathlib import Path# 这个路径真实存在
path = Path(r"D:\j\javaPro\test_crawler")# path.iterdir()使得path对象变为一个生成器对象
print(path.iterdir())for p in path.iterdir():print(p)# 如果数据量不多的话,也可使用list推导式
list_p = [p for p in path.iterdir()]
print(list_p)


😄glob() rglob()
from pathlib import Pathpath = Path(r"D:\j\javaPro\test_crawler")# ‌Path.glob()方法:非递归地遍历指定的目录,‌并返回所有匹配给定模式的Path对象列表
list_g = [p for p in path.glob("*.*")]
print(list_g)# rglob():递归地遍历指定的目录,包括子目录
list_r = [p for p in path.rglob("*.class")]
print(list_r)


from pathlib import Pathpath = Path(r"D:\py_related\test2\test.txt")path.exists()  # True
path.unlink()  # 删除了test.txt
path.stat()  # 获取文件状态  FileNotFoundError


😄 文件复制、压缩文件

shutil模块是一个提供了一系列对文件和文件集合进行高级操作的函数的模块。‌它是Python标准库的一部分,‌因此不需要安装任何额外的第三方包即可使用。

from pathlib import Path
import shutilsource = Path(r"D:\py_related\test2\test.txt")
target = Path(r"D:\py_related\test2\exam.txt")shutil.copy(source, target)


ZipFile类是一个用于读取和写入ZIP文件的工具

from pathlib import Path
from zipfile import ZipFile# 创建一个D:\py_related\test2目录下的名为files.zip的压缩文件
# 还可以这么写:zip_file=ZipFile(r"D:\py_related\test2\files.zip","w")
with ZipFile(r"D:\py_related\test2\files.zip", "w") as zip_file:for p in Path(r"D:\j\javaPro\test_crawler").rglob("*.*"):   zip_file.write(p)  #把这个目录下的所有文件压缩到zip_file中
# 使用with as 语句后就不用写zip_file.close()了with ZipFile(r"D:\py_related\test2\files.zip") as zip:print(zip.namelist())  # 打印出包含的所有文件目录info = zip.getinfo('j/javaPro/test_crawler/pom.xml')# 查看压缩前后的文件大小 均为1653因为这个文件比较小,故没有压缩处理print(info.file_size, info.compress_size)zip.extractall(r"D:\py_related\test2\unzip")

解压成功如下:




😄 输出path路径对应的文件的创建时间

(这是chatGPT给出的方案,但是在VScode中提示st_ctime已经不再推荐使用)

from pathlib import Path
import time
path = Path(r"D:\py_related\test2\test.txt")# Get the file's status information
file_stat = path.stat()# Access the creation time (on Unix, this may not be available)
# On Windows, this is creation time; on Unix, it's changed time
creation_time = file_stat.st_ctime# Convert the creation time to a human-readable format
readable_time = time.ctime(creation_time)print(f"Creation time for '{path}': {readable_time}")
# 输出:Creation time for 'D:\py_related\test2\test.txt': Thu Aug 22 16:12:48 2024




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/785516.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业微信如何远程打卡,免费

现在一些定位软件不好用或者要收费,那么如何能够很好的免费实现远程打开呢? 首先需要一个不用的旧手机,一直放在公司里,然后拿自己常用手机远程操作来实现,具体步骤如下:旧手机需要打开开发者模式,然后打开屏幕常亮保证不会锁屏;公司电脑下载scrcpy用来操作连接的旧手机…

JDK新特性:Stream流式编程

Stream流 Stream是Java 8 API添加的一个新的抽象,称为流Stream,以一种声明性方式处理数据集合(侧重对于源数据计算能力的封装,并且支持序列与并行两种操作方式)Stream流是从支持数据处理操作的源生成的元素序列,源可以是数组、文件、集合、函数。流不是集合元素,它不是数…

关于智能编码助手【通义灵码】,开发者们这么说...

自通义灵码发布以来,不停地有开发者朋友为我们送上通义灵码的测评反馈。自通义灵码发布以来,不停地有开发者朋友为我们送上通义灵码的测评反馈。 关于通义灵码,开发者这样说 墨问西东 CEO 池建强&墨问研发团队 “通义灵码有一个强大的功能就是企业知识库检索增强,我们只…

.net8 的webapi部署到华为云的操作

首先还是打包到文件夹:我的服务器是X64的centos 8 系统, 所以我的配置如图: 发布后,我没有用它的dockerfile,而是用的docker-compose去编写的docker脚本,如下:services:ticket_manager_Api: # 服务名称container_name: ticket_manager_Api # 容器名称hostname: ticket…

Qt Line Edit焦点丢失|Checkbox转移焦点丢失

在我设计的一个界面中,用事件过滤器获取键盘方向键,通过键盘方向键转移控件的焦点,获取焦点的控件显示高亮,在从一个Checkbox控件转移焦点到一个Line Edit控件的时候,该获得焦点的控件并没有显示高亮,并且根据后续操作推测焦点消失了,通过qDebug调试发现转移焦点后的那一…

蓝队新手应该学习的 4 个 SOC 工具(如何掌握这些基本的 SOC 工具及其相关技能。)

安全运营中心 (SOC) 分析师依靠各种工具来帮助他们监视他们的域。 然而,仅仅依靠工具来完成工作,而未能理解其背后的基本流程和方法,对于分析师来说可能是一个代价高昂的错误。 我们发现,近三分之一(29.5%)的专业人士认为事件处理流程和方法是SOC 分析师需要掌握的最重要…

火柴棍等式 ,但是数据范围有一点大……

上完课整的活题目描述 P1149 给你 \(n\) 根火柴棍,你可以拼出多少个形如 \(A+B=C\) 的等式?等式中的 \(A\)、\(B\)、\(C\) 是用火柴棍拼出的整数(若该数非零,则最高位不能是 \(0\))。用火柴棍拼数字 \(0\sim9\) 的拼法如图所示:注意:加号与等号各自需要两根火柴棍; 如果…

manim边学边做--直线类

直线是最常用的二维结构,也是构造其他二维图形的基础。manim中针对线性结构提供了很多模块,本篇主要介绍常用的几个直线类的模块。Line:通用直线 DashedLine:各种类型的虚线 TangentLine:根据已有的几何体,绘制它的切线 LabeledLine:带有标签的直线其中,DashedLine,Ta…

AP5174内置PWM调节LED灯亮度输入5-100V车灯驱动IC 手电筒与车灯方案

产品描述 AP5174 是一款效率高,稳定可靠的 LED 灯恒流驱动控制芯片,内置高精度比较器,固定 关断时间控制电路,恒流驱动电路等,特别适合大功率 LED 恒流驱动。 AP5174 采用 ESOP8 封装,散热片内置接 SW 脚,通过调节外置电流检测的电阻值来设置 流过 LED 灯的电流,支持外…

Adobe Illustrator AI v28下载及安装教程 (矢量图形设计软件)

前言 Adobe Illustrator(简称AI)专业矢量图形设计软件,矢量绘图设计工具,设计师常用的矢量绘制软件。该软件广泛应用于广告设计、印刷出版、海报书籍、插画绘制、图像处理、PDF文档设计、WEB页面等设计,借助这款矢量绘图工具,可以制作适用于印刷,Web,视频和移动设备的徽标…

DPDK简介和原理

DPDK是一种绕过内核直接在用户态收发包来解决内核性能的瓶颈技术。本文分享自天翼云开发者社区《DPDK简介和原理》,作者:s****n DPDK是一种绕过内核直接在用户态收发包来解决内核性能的瓶颈技术。 什么是中断 了解DPDK之前,首先需要先了解什么是中断,其实中断就是电信号,中…

Webpack 核心流程

我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。本文作者:霜序三个阶段 初始化阶段初始化参数:从配置文件、配置对象、shell 参数中读取,与默认的配置参数结合得出最后的参数。 创建编译器…