os库是python标准库中一个比较重要的库
它的主要功能有以下几点:
1.系统相关变量和操作
2.文件和目录相关操作
3.执行命令和管理进程
输出字符串指示正在使用的平台。如果是window 则用输出’nt’,对于Linux/Unix用户,输出’posix’。
import os
dlj = os.name
print(dlj)
得到当前工作目录
dlj = os.getcwd()
print(dlj)
以列表的形式返回指定目录path下的所有文件和目录名。
import os
path = './data' # 自己随便指定一个路径
dlj = os.listdir(path)
print(dlj)
创建新目录,path为一个字符串,表示新目录的路径。重点:这个函数只能生成下一级的目录,不能递归生成深层目录,且如果文件夹已存在,会报错。
import os
path = './wzh'
os.mkdir(path) # 在工程路径下会生成一个文件夹,名称为wzh
可生成多层递归目录。(同os.mkdir(path)
比较)
import os
path = './wzh/aaa'
os.makedirs(path) # 在工程路径下会生成wzh文件夹,再在wzh文件夹下生成aaa文件夹。如果最后一级目录存在
删除空目录,如果指定路径不是空目录则报错。
import os
path = './wzh/aaa'
os.makedirs(path)
os.rmdir('./wzh/aaa') # 删除wzh文件夹下的aaa文件夹,wzh文件夹未删除。
若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依次类推
import os
path = './aaa/bbb/ccc'
os.makedirs(path) # 递归创建目录
os.removedirs(path) # 递归删除目录
删除指定文件!!!(os.rmdir(path)
不同,os.rmdir(path)
是删除指定空文件夹,而os.remove(path)
是删除指定文件)
import os
os.remove('./1.txt') # 删除指定文件 这里删除.txt文件(文件是带有.后缀的)
import os
path = './dlj' + os.sep + 'wzh'
print(path) # ./dlj\wzh 其中 os.sep 代替路径分割符
os.makedirs(path) # 递归生成指定路径
取代转义字符\r\n.
import os
path1 = '/dlj\r\nwzh'
path2 = '/dlj' + os.linesep + 'wzh' # os.linesep 代表转移字符 \r\n
print(path1)
print(path2)
if path1 == path2:
print('ok')
文件重命名。
import os
path1 = './0001.jpg' # 已经存在的文件
path2 = './aaa.jpg' #更改后的文件名!!!(文件名后缀要一致)
os.rename(path1, path2) # 把 path1文件 更改为 path2文件 path1文件就不存在了
返回当前路径
返回当前路径的父目录,但使用时需结合os.path.abspath()
import os
print(os.curdir) # 返回'.'以表示当前路径
print(os.pardir) # 返回'..'以表示当前路径的父目录
# 这两个函数需要结合 os.path.abspath使用
aaa = os.path.abspath(os.curdir)
bbb = os.path.abspath(os.pardir)
print(aaa)
print(bbb)
改变当前工作路径
import os
path = 'D:/software/anaconda3/envs/torch1.2'
print(os.getcwd()) # 返回当前脚本工作路径
os.chdir(path) # 改变当前脚本工作路径
print(os.getcwd())
获取文件/路径 的信息。
获取操作系统的环境变量
root : 所指的是当前正在遍历的这个文件夹的本身的地址
dirs: 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
files : 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
一般结合for循环,遍历目录下的所有文件及目录。
import os
path = './result'
for root, dirs, files in os.walk(path):
for item in dirs:
print(os.path.join(root, item))
for item in files:
print(os.path.join(root, item))
os.path模块的功能我们都可以自己使用字符串操作手动实现,该模块的作用是让我们在实现相同功能的时候不必考虑具体的系统,尤其是不需要过多关注文件系统分隔符的问题。是使用非常频繁的一个模块。
返回path规范化的绝对路径. 参考上面os.pardir
等用法。
将多个路径组合后返回,第一个绝对路径之前的参数将被忽略。
import os
dlj = os.path.join('./dlj', 'aaa', 'bbb')
print(dlj)
返回path所指向的文件或者目录的最后访问时间。
返回path所指向的文件或者目录的最后修改时间
返回path所指向的文件或者目录的创建时间
import os
path = './dlj6.py'
x = os.path.getatime(path) # 返回path所指向的文件或者目录的最后访问时间
y = os.path.getctime(path) # 返回path所指向的文件或者目录的创建时间
z = os.path.getmtime(path) # 返回path所指向的文件或者目录的最后修改时间
print(x)
print(y)
print(z)
返回最后一级的文件名或目录。
import os
path = './input/detection-results'
print(os.path.basename(path))
返回文件路径(父路径)
import os
path = ',/input/detection-results/onecode_0a1d5cfbeb04312b01c634e534b78803.txt'
print(os.path.dirname(path))
如果路径 path 存在,返回 True;如果路径 path 不存在,返回 False。
返回文件大小,如果文件不存在就返回错误。
判断是否为绝对路径。
import os
path = ',/input/detection-results/onecode_0a1d5cfbeb04312b01c634e534b78803.txt'
print(os.path.isabs(path))
path1 = os.getcwd()
path2 = os.path.join(path1, path)
print(os.path.isabs(path2))
判断路径是否为目录。
判断路径是否为文件。
判断路径是否为链接。
判断路径是否相同。
把路径分割成 dirname 和 basename,返回一个元组.
import os
path = ',/input/detection-results/onecode_0a1d5cfbeb04312b01c634e534b78803.txt'
print(os.path.split(path))
分割路径,返回路径名和文件扩展名的元组。
返回path的真实路径。(绝对路径)