Python中除了os.path.join()拼接路径,还有其他什么方法拼接多分级文件夹路径?
常规单路径拼接
首先,我们讲一下os.path.join()拼接路径的用法:
正常,我们是一个路径+文件名
用os.path.join(path,filename)就可以将此文件的路径拼接起来
path = r'D:\Cplusplusprojects\CPP'
filename = “main.cpp”
full_path = os.path.join(path,filename) #full_path就可以作调用,传递参数等后续用途
多分级路径的拼接
例如,我们某个文件夹路径下的还有多分级的路径及文件/include/utils.h,那如何实现呢?
按照常规思路,大致会用到os.path.join(),但是此时会报错:
no such file or dictory
那么问题根源在于斜杠的方向,r’D:\Cplusplusprojects\CPP’会编译成"D:\ \Cplusplusprojects\ \CPP",
如果再接地址D:\ \Cplusplusprojects\ \CPP/include/utils.h,就会报错
那分隔符手工修改后,并不能直接用使用了os.path.join()了,使用的结果是会把path路径吃掉,直接后后面的分级目录了!
那如何拼接呢?
直接就字符串相加拼接full_path = path + filename
path = r'D:\Cplusplusprojects\CPP'
filename = r"\include\utils.h"
# full_path = os.path.join(path, filename)
full_path = path + filename
print(full_path)
#打印结果
D:\Cplusplusprojects\CPP\include\utils.h
这样就可以实现多分级路径的拼接了
循环下的多路径拼接
实际使用中,代码的作用是批量作用,如果失去了效率,还不手工,那如何实现循环下的多路径拼接?
format常用的形式是f’{variable}’
folders = [f"{project_name}/",
f"{project_name}/src",
f"{project_name}/include",
f"{project_name}/build",
f"{project_name}/docs",
f"{project_name}/scripts"
]
files = [
f'{path}\{project_name}'+r'\src\main.cpp',
f'{path}\{project_name}'+r'\include\utils.h',
f'{path}\{project_name}'+r'\CMakeLists.txt',
f'{path}\{project_name}'+r'\README.md',
]
for file in files:
fp = open(file, 'a')
我们将单个拼接的方式,进行修改成format形式的语句,可以在不同的文件夹里面写入不同的格式的文件