在Python中,有没有一种简单的方法来替换pathlib.Path
对象中的子字符串?pathlib module is nicer in many ways比将一条路径存储为str
,并使用os.path
、glob.glob
等,它们内置于pathlib
中.但我经常使用遵循某种模式的文件,并经常替换路径中的子字符串来访问其他文件:
data/demo_img.png
data/demo_img_processed.png
data/demo_spreadsheet.csv
以前我可以做:
img_file_path = "data/demo_img.png"
proc_img_file_path = img_file_path.replace("_img.png", "_img_proc.png")
data_file_path = img_file_path.replace("_img.png", "_spreadsheet.csv")
pathlib
可以用with_suffix()
方法替换文件扩展名,但只接受扩展名作为有效后缀.解决办法是:
import pathlib
import os
img_file_path = pathlib.Path("data/demo_img.png")
proc_img_file_path = pathlib.Path(str(img_file_path).replace("_img.png", "_img_proc.png"))
# os.fspath() is available in Python 3.6+ and is apparently safer than str()
data_file_path = pathlib.Path(os.fspath(img_file_path).replace("_img.png", "_img_proc.png"))
转换成字符串进行替换,再转换成Path
个对象似乎很费劲.假设我从来没有img_file_path
字符串格式的副本,并且必须根据需要转换类型.