pathlib介绍-比os.path更好的路径处理方式

文章来源: https://zhuanlan.zhihu.com/p/33524938

我们先来聊下三种操作系统windows、Mac 和 Linux,

Windows filenames:
C:\some_folder\some_file.txt
Most other operating systems:
/some_folder/some_file.txt

如上所示,带来的一个编程小麻烦就是不同的操作系统,文件连接所用正反斜线是不一致的。

这是一个有趣的历史:early 1980’s computer history

现在,python3有一个pathlib的模块,可以让你优雅的工作。

错误的方式:手动拼接

data_folder = "source_data/text_files/"

file_to_open = data_folder + "raw_data.txt"

f = open(file_to_open)

print(f.read())

这样写,你不能让每个操作系统都能顺利执行。并会让其他程序员用怀疑的眼光看着你。

旧的解决方式:os.path模块

import os.path

data_folder = os.path.join("source_data", "text_files")

file_to_open = os.path.join(data_folder, "raw_data.txt")

f = open(file_to_open)

print(f.read())

此代码可以在各个平台顺利运行,但是反复使用os.path.join很啰嗦,重点是一点都不优雅!

os.path有很多功能,但是比较繁琐,导致大家虽然都知道,但是就是懒得用。

更好解决方式:pathlib模块

python3.4+ 都自带标准库pathlib,所以你不需要再通过pip3 安装,这很cool

你只需要这样

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())

至此,你用一个非常优雅的方式解决了一个重大问题,但是你以为pathlib仅此而已了吗?

你可用它读文件,而不需要open()

from pathlib import Path

data_folder = Path("source_data/text_files/")

file_to_open = data_folder / "raw_data.txt"

print(file_to_open.read_text())

更cool的是,pathlib可以让你常用的文件及路径操作变得极为简单快捷

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!")

同学们,快去尝试吧。这里是官方地址:

11.1. pathlib - Object-oriented filesystem paths - Python 3.6.4 documentation

参考文章:

11.1. pathlib - Object-oriented filesystem paths - Python 3.6.4 documentation

https://medium.com/@ageitgey/python-3-quick-tip-the-easy-way-to-deal-with-file-paths-on-windows-mac-and-linux-11a072b58d5f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值