文章来源: 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