百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Python路径操作的一些基础方法

bigegpt 2025-01-01 18:05 4 浏览

带你走进 @ 机器人时代

Discover 点击上面蓝色文字关注我们


Python
自动化操作文件避开不了路径操作方法,今天我们来学习一下路径操作的一些基础。

Pathlib库模块提供的路径操作包括路径的获取、分解、拼接、修改等,在Python中,我们需要导入Pathlib模块,并创建一个路径对象:

from pathlib import Path
a=path(r'F:\Python学习\第2章')
a=path('F:\\Python学习\\第2章')
a=path('F:/Python学习/第2章')


请注意,在创建路径对象的时候,设置路径的三种书写格式。要获取路径,我们需要使用cwd()和home()函数,如下:

from pathlib import  Path
#获取路径的函数
a=Path.cwd()#获取当前工作目录的绝对路径
b=Path.home()#获取当前用户文件夹的绝对路径
print(a)
print(b)
输出结果:
E:\Python程序\Pathlib学习
C:\Users\zhangsan


在实际工作中,我们往往需要对路径进行分解,可以使用parts属性:

from pathlib import  Path
#获取路径的函数
a=Path.cwd()
b=Path.home()
#分解路径
s=a.parts
print(s)
运行结果:
('E:\\', 'Python程序', 'Pathlib学习')


我们发现,输出的是一个元组。那么可以通过s[0]、s[1]的方式来进行分解后的输出。

我们也可以通过parent属性来获取上级路径,我们来看看下面代码的运行结果,相信你一看就懂:

from pathlib import  Path
#获取路径的函数
a=Path.cwd()
b=Path.home()
#分解路径
s=a.parts
#使用parent属性
r=a.parent
y=a.parent.parent
print(r)
print(y)
运行结果:
E:\Python程序
E:\


如果使用parents属性,我们会得到一个路径对象,可以通过它的索引来进行访问:

from pathlib import  Path
#获取路径的函数
a=Path.cwd()
b=Path.home()
#分解路径
s=a.parts
#使用parents属性
n=a.parents
print(type(n),n[0])

运行结果:
<class 'pathlib._PathParents'> E:\Python程序


当然,我们也可以用循环遍历的方法来提取各级路径:

from pathlib import  Path
#获取路径的函数
a=Path.cwd()
n=a.parents
#使用循环遍历的方法
[print(t) for t in n]

输出结果:
E:\Python程序
E:\


如果我们需要提取文件名,就可以使用name属性和stem属性,具体示例如下:

from pathlib import  Path
a=Path('F:/temp/all/学生成绩表.xlsx')
#获取文件名
r=a.name
#获取文件主名
s=a.stem
#获取文件夹名
n=a.parent.name
print(r)
print(s)
print(n)

输出结果:
学生成绩表.xlsx
学生成绩表
all


那么,我们需要判断文件的扩展名,就需要用到suffix和suffixes属性了,前者得到文件的扩展名,后者得到文件的扩展名的列表,在unix系统中使用比较常见,如:‘xx.tar.gz’,在Windows系统中,我们一般使用suffix属性:

from pathlib import  Path
a=Path('F:/temp/all/学生成绩表.xlsx')
#获取文件扩展名
print(a.suffix)

运行结果:
.xlsx


当我们操作完成文件后,经常需要重新拼接路径,最简单的办法就是使用‘/’方法:

from pathlib import  Path
a=Path('F:/')
b=Path('temp')
c=Path('all')
print(a/b/c)

输出结果:
F:\temp\all


也可以使用joinpath()函数进行拼接:

from pathlib import  Path
a=Path('F:/')
b=Path('temp')
c=Path('all')
print(a.joinpath(b,c))

运行结果:
F:\temp\all


下面的例子,使用with_方法更改文件名以及扩展名:

from pathlib import  Path
a=Path('F:/temp/all/1.xlsx')
#更改路径中的文件名
print(a.with_name('3.xlsx'))
#更改路径中的文件主名
print(a.with_stem('8'))
#更改路径中的文件扩展名
print(a.with_suffix('.xls'))

输出结果:
F:\temp\all\3.xlsx
F:\temp\all\8.xlsx
F:\temp\all\1.xls


在机器自动化运行的过程中,不是每一个操作都会进行输出显示的,所以有时候我们需要程序判断路径是否为绝对路径,通过is_absolute()可以实现:

from pathlib import  Path
a=Path('F:/temp/all/1.xlsx')
#判断是否为绝对路径
print(a.is_absolute())

输出结果:
True


需要值得注意的是,本文我们学习的路径操作只针对路径本身,并不会实际操作计算机上的文件,那么要真正操作这些文件,我们需要进入后面的学习,文件和文件夹的操作。

继续坚持学习,每天都能进步一点!!!


往期回顾:

  • 来来来,送你一个金牌销售机器人,7X24小时不休,不要工资免费用!
  • 不要嫌你现在的工作很累,可能你离失业不远了!
  • 作为旅游行业的一个小老板,我受够了!这是要被淘汰的节奏吗?


本文引用和摘录相关内容,请联系侵删。

- END -


最后,文章有帮助到你的话点赞在看
励我们分享更多的干货!

相关推荐

为3D手游打造, Visual Studio Unity扩展下载

IT之家(www.ithome.com):为3D手游打造,VisualStudioUnity扩展下载7月30日消息,微软正式发布升级版VisualStudioToolsforUnity扩...

由ArcMap属性字段自增引出字段计算器使用Python的技巧

1.前言前些日子有人问我ArcMap中要让某个字段的值实现自增有什么方法?我首先想到像SQLServer中对于数值型字段可以设置自增。所以我打开ArcCatalog查看发现只提供默认值,没办法只能看...

微软首次回答 HoloLens 相关问题,终于爆料了

fengo2015/04/2115:11注:本文作者张静是NVIDIAGPU架构师,微信公众号“黑客与画家”(HackerAndPainter),知乎专栏地址。欢迎各位童鞋与他交流探讨。...

C#指针的应用(c#指针类型)

C#在有限的范围内支持指针。C#的指针只不过是一个持有另一类型内存地址的变量。但是在C#中,指针只能被声明为持有值类型和数组的内存地址。与引用类型不同,指针类型不被默认的垃圾收集机制所跟踪。出于同...

C# 堆栈(Stack)(c# 堆栈中定位调用messagebox 的地方)

C#集合在C#中,堆栈(Stack)是一种后进先出(LIFO,LastInFirstOut)的数据结构。堆栈(Stack)适用于存储和按顺序处理数据,其中最新添加的元素会最先被移除。堆...

欢迎回来:Fortran意外重回流行编程语言20强榜单

TIOBE指数是用来确定一种编程语言受欢迎程度的指标之一。它并不表明哪种编程语言是最好的,也不表明哪种编程语言写的代码行数最多,而是利用在谷歌、维基百科、必应、亚马逊、YouTube等各种引擎和网站上...

C#+NET MAUI实现跨平台/终端(linux,win,ios等)解决方案

简介.NETMulti-platformAppUI(.NETMAUI)是一个跨平台的框架,用于使用C#和XAML创建移动和桌面应用程序。使用.NETMAUI,您可以用一套代码库开发可以在A...

C#代码安全红线:SQL注入防护终极方案,让你的系统固若金汤

在数字化时代,应用系统的安全性至关重要。而SQL注入攻击,长期盘踞在OWASP(OpenWebApplicationSecurityProject)漏洞榜单的前列,成为众多基于数据库的应用系统...

C# (一)状态机模式(状态机代码实现)

最近空闲,炒炒隔夜饭,以前这些模式在自己项目种应用过不少,但一直没有像别人那样写一个系列,最近年纪大了,很多东西都忘记了,特别AI的兴起,更少写代码了,反正没什么事情,自己在重写一遍吧。创建型模式(5...

C# 中 Predicate 详解(c#中的replace)

Predicate泛型委托:表示定义一组条件并确定指定对象是否符合这些条件的方法。此委托由Array和List类的几种方法使用,用于在集合中搜索元素。Predicate<T>...

C#中$的用法?(c#中&&什么意思)

文章来自AI问答。在C#中,$符号用于字符串插值(StringInterpolation)。字符串插值是C#6.0引入的一种特性,它允许你在字符串中直接嵌入表达式,而不需要使用string.For...

C#并行编程:Parallel类(c# 并行处理)

在Parallel类中提供了三个静态方法作为结构化并行的基本形式:Parallel.Invoke方法:并行执行一组委托。Parallel.For方法:执行与C#for循环等价的并行方法。Parall...

颠覆认知!用Span重构foreach循环竟让数据处理快如闪电

在C#编程的世界里,数据处理效率始终是开发者们关注的焦点。随着项目规模的扩大和数据量的激增,哪怕是细微的性能提升,都可能对整个应用的响应速度和用户体验产生深远影响。近年来,C#引入的Span<T...

Unity3D手游开发实践《腾讯桌球》客户端开发经验总结

本次分享总结,起源于腾讯桌球项目,但是不仅仅限于项目本身。虽然基于Unity3D,很多东西同样适用于Cocos。本文从以下10大点进行阐述:1.架构设计2.原生插件/平台交互3.版本与补丁4.用脚本,...

.NET 7 AOT 的使用以及 .NET 与 Go 互相调用

目录背景C#部分环境要求创建一个控制台项目体验AOT编译C#调用库函数减少体积C#导出函数C#调用C#生成的AOTGolang部分安装GCCGolang导出函数.NETC#...