os全名为operating system(操作系统),Python中的os模块封装了常见的文件和目录操作。
python中文文档:https://docs.python.org/zh-cn/3.8/index.html
1 os.path
1.1 os.path.exists(path)
os.path模块主要用于文件的属性获取,exists是“存在”的意思,所以顾名思义,os.path.exists()就是判断括号里的文件是否存在的意思,括号内的可以是文件路径。如果 path 指向一个已存在的路径或已打开的文件描述符,返回True。对于失效的符号链接,返回False。
栗子:‘../MNIST’指上一层下的MNIST文件夹
代码:
# code
import os
path = os.path.exists('../MNIST') # 括号的的参数为MNIST文件路径,判断其是否存在
print(path)
# result
True
Process finished with exit code 0
如果不存在,返回的则是False。
1.2 os.path.join(path, *paths)
这个函数能够将一个或多个子路径智能的合并在一起,返回值是包含将path和*path中的所有成员全部用一个文件连接符(os.sep)连接而成的一个字符串,当然了,如果最后一个元素为空,返回值会以一个文件连接符(分隔符)结尾。
如果当前子路径是一个绝对路径,所有之前的子路径将会被忽略,而会以当前这个绝对路径为开头连接接下来的子路径。
注意:会以最后一个绝对路径为返回值的起始路径。
栗子:
import os
In:os.path.join('/my/', 'name/is/', 'XIAO_AI')
Out:'/my/name/is/XIAO_AI'
In:os.path.join('/my/', 'name/is/', '/XIAO_AI')
Out: '/XIAO_AI'
In: os.path.join('/my/', '/name/is/', 'XIAO_AI')
Out: '/name/is/XIAO_AI'
学习中遇到的错误:
import os
data_path = '../data/test'
path1 = os.path.join(data_path, 'images/', '001.jpg')
path2 = data_path + '/images/' + '001.jpg'
path3 = os.path.join(data_path, 'images', '001.jpg')
path4 = os.path.join(data_path, '/images', '001.jpg')
print(path1)
print(path2)
print(path3)
print(path4)
# result
/Users/i-mamba/opt/anaconda3/envs/DeepLearning/bin/python3.7 /Users/i-mamba/修仙之路/代码篇/手提包检测分割/codes/question.py
../data/test/images/001.jpg
../data/test/images/001.jpg
../data/test/images/001.jpg
/images/001.jpg
Process finished with exit code 0
注:从代码可以看出,path1与path2、path3是等价的。而path4不等价。os.path.join会自动补充‘/’。从最后一个以‘/’为开始的名字作为起始。