热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

听说,python高手都用这个方法处理路径

python高手

python小白处理路径的方式:
data_folder = "source_data/text_files/"
file_to_open = data_folder + "raw_data.txt"。
后来在python老鸟的指导下,终于知道了,可以使用os.path来处理:
file_to_open = os.path.join(data_folder, "raw_data.txt")。真正的高手是不会用这两种方式的,快来学习一下吧。

使用pathlib

在python3.4中,引入了一个新的包来处理文件和路径,那就是pathlib,这是一个非常棒的python包,目的是取代现有的os.path包。

其基本使用方式:

from pathlib import Path

data_folder = Path("source_data/text_files/")

file_to_open = data_folder "raw_data.txt"

f = open(file_to_open)

print(f.read())

看起来似乎也没有方便更多?

那你就错了!

请注意,在上面的代码中,Path中的路径里用的都是"/",现在不管你的程序是在windows,linux还是macOS,都可以这样使用。

不用考虑windows中麻烦的路径分隔符:
data_folder = "source_data\\text_files\\"

Path会根据目标平台自动帮你转换好的。

另外,拼接路径时,再也不需要使用os.path.join(a,b)这么笨重的方法,直接"/"进行拼接即可。这得益于python的操作符重载功能!

读取内容

在上面的演示代码中,读取文件内容还是用的老式方法,其实大可不必,现在可以这么做:

rom pathlib import Path

data_folder = Path("source_data/text_files/")

file_to_open = data_folder "raw_data.txt"

print(file_to_open.read_text())

这里,你只需要read_text(),不用考虑文件的关闭问题,因为Path都为你在背后做好了。

各种小甜点

使用Path,路径中的很多信息可以轻松获得:

from pathlib import Path

filename = Path("source_data/text_files/raw_data.txt")

print(filename.name)
# prints "raw_data.txt"

print(filename.suffix)
# prints "txt"

print(filename.stem)
# prints "raw_data"

if not filename.exists():
print("Oops, file doesn't exist!")
else:
print("Yay, the file exists!")

import webbrowser

filename = Path("source_data/text_files/raw_data.txt")

# 获取绝对路径并转换为file://开头的uri,用浏览器打开
webbrowser.open(filename.absolute().as_uri())

不同平台路径格式转换

使用pathlib,你可以轻松在在不同平台之间转换路径格式,以Unix和Windows两个平台为例:

from pathlib import Path, PureWindowsPath

filename = Path("source_data/text_files/raw_data.txt")

# Convert path to Windows format
path_on_windows = PureWindowsPath(filename)

print(path_on_windows)
# prints "source_data\text_files\raw_data.txt"

是不是感觉pathlib非常的棒呢,的确,它帮我们解决了很多烦人的小问题,减少了模板代码,使得我们的程序更加的干练通用。这就是python比较强大的地方,有非常多非常棒的库帮助我们完成工作。

以后,我会不定期分享python相关的小技巧,欢迎关注哦!

往期精彩回顾

【crash DP】上下班路上学动态规划(1)

【腾讯面试热身题】二叉树层次遍历(动画展示)

【阿里高频题】动画讲解二叉树深度优先遍历

【阿里高频题】二叉树深度遍历进阶版

【图解】快慢指针解链表判环问题

【强!】深度优先遍历求二叉树的直径

  换个风格学快速排序

【头条面试-40K】反转吧,链表!

【头条面试-40K】反转链表加强版

【面霸之路】双指针和滑动窗口结合

【送书!】最佳算法入门书籍

  我是如何简单粗暴攻克面试算法题入职阿里的?

【阿里面试热身题】数组去重(动画展示)





推荐阅读
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
author-avatar
手机用户2502884601
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有