Python中常用生成文件路径的方式有三种:分别为手动拼接、os.path包、pathlib包(python3)。
错误的方式——手动拼接1
2
3
4
5data_folder = "source/data/"
file_path = data_folder + "hello.txt"
f = open(file_path, "r")
print(f.read())
为什么是错误的方式呢?
1、手动拼接的方式麻烦,且容易出错
2、Windows、Macos、Linux三个系统中的路径连接方式不相同,Windows中使用的是反斜杠“”,而另外两个系统中使用的是斜杠“/”。不利于跨平台运行。
旧的方式——os.path
os.path是一个在python2和python3中都存在的包,功能多样。解决了1中提到的跨平台问题。但却“过于多样”,导致我们很多时候难以记住自己想使用的方法。同时也由于多次使用,使代码不够简洁。
1
2
3
4
5
6import os.path
data_folder = os.path.join("source", "data")
file_path = os.path.join(data_folder, "hello.txt")
f = open(file_path, "r")
print(f.read())
更好的方法——pathlib
pathlib是一个在python3.4+中自带的包。使用方法简单,且功能多样。
1
2
3
4
5
6from pathlib import Path
data_folder = Path("source/data/")
file_path = data_folder / "hello.txt"
f = open(file_path, "r")
print(f.read())
# Hello,World!
如果只是这些,或许大家会说,这个也并没有比os.path好多少嘛!
其实,Path方法还有read的相关方法,这样就可以减少我们调用open的次数,同时精简代码量。
1
2
3
4print(file_path.read_bytes())
# b'Hello,World!'
print(file_path.read_text())
# Hello,World!
还有一些其他方便常用的方法,可以大大精简我们的代码量。使我们的代码更加美观。
1
2
3
4
5
6file_path.suffix
# 'txt' 显示文件后缀
file_path.stem
# 'hello' 显示文件名(不含后缀)
file_path.name
# 'hello.txt' 返回文件全名
除此之外,还有rename、replace、is_file、exists等方法,详情请看官方文档。