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相关的小技巧,欢迎关注哦!