首页 > 其他 > 详细

lib:优雅的路径处理库

时间:2021-01-03 23:03:00      阅读:53      评论:0      收藏:0      [点我收藏+]
玩编程好像时时刻刻都少不了跟文件路径打交道,例如爬取的数据保存到指定地方,或者分析数据时读取指定的文件。

一、常规的方法是用os库实现
获取代码当前路径,然后join当前路径后面的文件夹,再join文件夹里的文件。


import os

data_dir = os.path.join(os.getcwd(), "data")

data_file = os.path.join(data_dir, "data.csv")

上述能正常运行,但有点麻烦。那用一行写,简单点是下面这样


import os

data1_file = os.path.join(os.path.join(os.getcwd(), "data"), "data1.csv")

好像行数是少了,但是嵌套关系让这代码的可读性大大降低。而且写代码时多一个括号或少一个括号就容易出bug。

三、pathlib如何处理这种情景的


from pathlib import Path

data1_file = Path.cwd() / "data" / "data1.csv"

en,比os简洁一些了。但是这样好像看着有点别扭。我们还是喜欢用函数或者方法的形式拼接


#代码有点长,不过可读性已经很强了。
data1_file = Path.cwd().joinpath("data").joinpath("data1.csv")

其实还可以简洁点,可读性又有保障。


parts = ["data", "data1.csv"]

data1_file = Path.cwd().joinpath(*parts)

四、pathlib库中的对象


from pathlib import Pathimport os

parts = ["data", "data1.csv"]

data1_file = Path.cwd().joinpath(*parts)
print(type(data1_file))

data_file = os.path.join(os.path.join(os.getcwd(), "data"), "data.csv")
print(type(data_file))
<class ‘pathlib.PosixPath‘>
<class ‘str‘>

os方法处理的路径是字符串,但是pathlib返回的路径是一种类。pathlib.PosixPath使得pathlib的路径有新的好用的方法。


from pathlib import Path

path = ‘/Users/suosuo/Desktop/pathlib学习/data/pathlib文件路径信息处理.md‘

p_obj = Path.cwd().joinpath(*parts)

#路径是否是文件夹
print(p_obj.is_dir())

#将路径拆分
print(p_obj.parts)

#该路径的父母路径
print(p_obj.parent)
False
(‘/‘, ‘Users‘, ‘suosuo‘, ‘Desktop‘, ‘pathlib学习‘, ‘data‘, ‘pathlib文件路径信息处理.md‘)
/Users/suosuo/Desktop/pathlib学习/data

lib:优雅的路径处理库

原文:https://blog.51cto.com/15069487/2581391

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!