【python学习笔记】路径拼接函数:os.path.join(Path1,Path2,Path3)

一、定义

os.path.join()函数:连接两个或更多的路径名分量,

  • 使用说明:
  • 如果各组件名首字母不包含’/’,则函数会自动加上’/’;详见2.1和2.2节
  • 如果有一个组件是一个绝对路径,即带有‘/’,则在它之前的所有组件均会被舍弃;详见2.3节
  • 如果最后一个组件为空,则生成的路径以一个’/’分隔符结尾;详见2.4节
  • 如果不显示地添加斜杠‘/’,那么程序会自动添加反斜杠‘\’;详见2.5节
  • 要使用斜杠,就在所有路径的后面都添加上‘/’,否则会导致斜杠和反斜杠混乱!!详见2.6节
  • 在Windows系统下,路径既可以使用斜杠连接,也可以使用反斜杠连接。

二、用法示例

2.1 如果各组件名首字母不包含’/’,则函数会自动加上’/’

import os

# 定义各个路径,不包含符号‘/’:各组件名首字母不包含'/',则os.path.join()函数会自动加上'/'
path1 = 'SRCNN'
path2 = 'experiments'
path3 = 'VDSR'
path4 = 'epochs'

path_1 = path1 + path2 + path3 + path4
path_2 = os.path.join(path1, path2, path3, path4)
print('path_1 = ', path_1)
print('path_2 = ', path_2)

  • 输出
path_1 =  SRCNNexperimentsVDSRepochs
path_2 =  SRCNN\experiments\VDSR\epochs

2.2 各组件名首字母包含’/’的情况

path1 = '/SRCNN' # 修改之处,在第一个路径组件前面添加了斜杠
path2 = 'experiments'
path3 = 'VDSR'
path4 = 'epochs'

path_1 = path1 + path2 + path3 + path4
path_2 = os.path.join(path1, path2, path3, path4)
print('path_1 = ', path_1)
print('path_2 = ', path_2)
  • 输出
path_1 =  /SRCNNexperimentsVDSRepochs
path_2 =  /SRCNN\experiments\VDSR\epochs

2.3 如果有一个组件是一个绝对路径,则在它之前的所有组件均会被舍弃;

import os

path1 = 'SRCNN'
path2 = '/experiments'
path3 = 'VDSR'
path4 = 'epochs'

path_1 = path1 + path2 + path3 + path4
path_2 = os.path.join(path1, path2, path3, path4)
print('path_1 = ', path_1)
print('path_2 = ', path_2)
  • 输出
path_1 =  SRCNN/experimentsVDSRepochs
# 舍弃了experiment之前的组件,即SRCNN
path_2 =  /experiments\VDSR\epochs

2.4 如果最后一个组件为空,则生成的路径以一个’/’分隔符结尾;

path1 = 'SRCNN'
path2 = 'experiments'
path3 = 'VDSR'
path4 = '' # 最后一个组件为空

path_1 = path1 + path2 + path3 + path4
path_2 = os.path.join(path1, path2, path3, path4)
print('path_1 = ', path_1)
print('path_2 = ', path_2)
  • 输出
path_1 =  SRCNNexperimentsVDSR
# 输出在路径末尾添加反斜杠
path_2 =  SRCNN\experiments\VDSR\

2.5 如果不显示地添加斜杠‘/’,那么程序会自动添加反斜杠‘\’

# 没有显示添加斜杠
print(os.path.join('SRCNN', 'experiments', 'VDSR', 'epochs'))
# 输出为反斜杠‘\’连接的路径,清一色
SRCNN\experiments\VDSR\epochs

# 全部显示添加斜杠‘/’
print(os.path.join('SRCNN/', 'experiments/', 'VDSR/', 'epochs'))
# 输出位斜杠‘/’连接的路径
SRCNN/experiments/VDSR/epochs

2.6 错误的写法,即不符合路径的格式

# 部分显示添加斜杠
print(os.path.join('SRCNN', 'experiments', './VDSR'))
# 输出,混乱!!严禁这种写法
SRCNN\experiments\./VDSR

三、不良写法示例

# 不良写法习惯
os.path.join('/SRCNN','/experiment/epoch','/last_ckp.pth')
  • 建议写法,将‘/’放在每个路径名组件的后面,即紧随其后!
# 建议写法
os.path.join('/SRCNN/','experiment/epoch/','last_ckp.pth')
# 输出
/SRCNN/experiment/epoch/last_ckp.pth
  • 15
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值