热门标签 | 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】反转链表加强版

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

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

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

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





推荐阅读
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 使用多项式拟合分析淘宝双11销售趋势
    根据天猫官方数据,2019年双11成交额达到2684亿元,再次刷新历史记录。本文通过多项式拟合方法,分析并预测未来几年的销售趋势。 ... [详细]
  • Python 序列图分割与可视化编程入门教程
    本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
  • Python多线程编程技巧与实战应用详解 ... [详细]
  • 深入解析Java虚拟机的内存分区与管理机制
    Java虚拟机的内存分区与管理机制复杂且精细。其中,某些内存区域在虚拟机启动时即创建并持续存在,而另一些则随用户线程的生命周期动态创建和销毁。例如,每个线程都拥有一个独立的程序计数器,确保线程切换后能够准确恢复到之前的执行位置。这种设计不仅提高了多线程环境下的执行效率,还增强了系统的稳定性和可靠性。 ... [详细]
  • 本文总结了《编程珠玑》第12章关于采样问题的算法描述与改进,并提供了详细的编程实践记录。参考了其他博主的总结,链接为:http://blog.csdn.net/neicole/article/details/8518602。 ... [详细]
  • 本文介绍了如何在 ASP.NET 中设置 Excel 单元格格式为文本,获取多个单元格区域并作为表头,以及进行单元格合并、赋值、格式设置等操作。 ... [详细]
  • MicrosoftDeploymentToolkit2010部署培训实验手册V1.0目录实验环境说明3实验环境虚拟机使用信息3注意:4实验手册正文说 ... [详细]
  • 解决问题:1、批量读取点云las数据2、点云数据读与写出3、csf滤波分类参考:https:github.comsuyunzzzCSF论文题目ÿ ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • Mac版Office 2021与2016:项目管理软件下载、安装及一键永久激活指南
    Mac版Office 2021与2016:项目管理软件下载、安装及一键永久激活指南 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 在分析和解决 Keepalived VIP 漂移故障的过程中,我们发现主备节点配置如下:主节点 IP 为 172.16.30.31,备份节点 IP 为 172.16.30.32,虚拟 IP 为 172.16.30.10。故障表现为监控系统显示 Keepalived 主节点状态异常,导致 VIP 漂移到备份节点。通过详细检查配置文件和日志,我们发现主节点上的 Keepalived 进程未能正常运行,最终通过优化配置和重启服务解决了该问题。此外,我们还增加了健康检查机制,以提高系统的稳定性和可靠性。 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
  • 本文全面解析了 Python 中字符串处理的常用操作与技巧。首先介绍了如何通过 `s.strip()`, `s.lstrip()` 和 `s.rstrip()` 方法去除字符串中的空格和特殊符号。接着,详细讲解了字符串复制的方法,包括使用 `sStr1 = sStr2` 进行简单的赋值复制。此外,还探讨了字符串连接、分割、替换等高级操作,并提供了丰富的示例代码,帮助读者深入理解和掌握这些实用技巧。 ... [详细]
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社区 版权所有