os.path模块
os.path中的函数基本上是纯粹的字符串操作。换句话说,传入该模块函数的参数甚至不需要是一个有效路径,该模块也不会试图访问这个路径,而仅仅是按照“路径”的通用格式对字符串进行处理
- os.path 获取当前环境的路径
os.path
- os.path.abspath(path) 返回路径 path 的绝对路径
# 根据相对路径返回绝对路径 print(os.path.abspath('a/c/aaa.txt'))
- os.path.exists(path) 判断该路径或文件是否存在
path:路径
返回布尔值,True,False
# 检查文件是否存在 print(os.path.exists('a/c')) # 检查aaa.txt文件是否存在 print(os.path.exists('a/c/aaa.txt'))
- os.path.getatime(path)返回path的最后访问时间,返回的时间为秒(时间戳),可以利用tiem转换成常用的时间格式
# 返回文件a最后的访问时间 print(os.path.getatime('a')) t = os.path.getatime('a') # 获取时间戳 tupTime = time.localtime(t) # 将时间戳转换成本地时间 stadardTime = time.strftime("%Y-%m-%d %H:%M:%S", tupTime) # 转换成对应的时间格式 print(stadardTime) # 2022-09-18 11:44:28
- os.path.getctime(path) 在windos下获取文件的创建时间,在Unix返回的是最后的修改时间
# 获取aaa.txt文件的创建时间(windows) t = os.path.getctime('a/c/aaa.txt')
- os.path.getsize(path) 获取文件的大小
# 获取文件aaa.txt的大小 os.path.getsize('a/c/aaa.txt')
os.path.split() 将路径 path 拆分为一对,即 (head, tail),其中,tail 是路径的最后一部分,而 head 里是除最后部分外的所有内容。tail 部分不会包含斜杠,如果 path 以斜杠结尾,则 tail 将为空。如果 path 中没有斜杠,head 将为空。如果 path 为空,则 head 和 tail 均为空。
返回的部分是一个元组里面由两个元素
a = os.path.split('D:/aa/bb') print(type(a)) # <class 'tuple'> print(a) # ('D:/aa', 'bb') 头部和尾部 # 当最后为’/‘时 a = os.path.split('D:/aa/bb/') print(a) # ('D:/aa/bb', '') 尾部为空 # 当路径path中没有路径的时候 a = os.path.split('aa') print(a) # ('', 'aa') # 头部为空 # 当传入的路径为空时 a = os.path.split( '') print(a) # ('', '') # 头部和尾部均为空
- os.path.isfile() 判断传入的文件是否存在 返回布尔值
# 判断文件是否存在 os.path.isfile('a/c/aaa.txt')
- os.path.isdir() # 判断文件路径是否存在 返回布尔值
# 判断路径a/c是否存在 os.path.isdir('a/c')
os.open()模块
- os.open() 打开文件的一系列操作
用法和基本的open函数很类似
注解 本函数适用于底层的 I/O。常规用途请使用内置函数 open(),该函数的 read() 和 write() 方法(及其他方法)会返回 文件对象。要将文件描述符包装在文件对象中,请使用 fdopen()。
os.open(file, flags[, mode]) ''' file 文件名 flags 模式 mode 可选参数, mode 设置其权限状态 '''
flags – 该参数可以是以下选项,多个使用 “|” 隔开:
os.O_RDONLY: 以只读的方式打开
os.O_WRONLY: 以只写的方式打开
os.O_RDWR : 以读写的方式打开
os.O_NONBLOCK: 打开时不阻塞
os.O_APPEND: 以追加的方式打开
os.O_CREAT: 创建并打开一个新文件
os.O_TRUNC: 打开一个文件并截断它的长度为零(必须有写权限)
os.O_EXCL: 如果指定的文件存在,返回错误
os.O_SHLOCK: 自动获取共享锁
os.O_EXLOCK: 自动获取独立锁
os.O_DIRECT: 消除或减少缓存效果
os.O_FSYNC : 同步写入
os.O_NOFOLLOW: 不追踪软链接
在写入文件时不能直接写入字符串否则会报错TypeError: a bytes-like object is required, not 'str'
# 打开文件 fd = os.open("foo.txt", os.O_RDWR|os.O_CREAT ) # 模式可以并存中间用 | 隔开 # 写入字符串 a = b"This is test" os.write(fd,a) # 关闭文件 os.close(fd) print("关闭文件成功!!")
最后的补充
最后如果忘记了os的用法可以使用内置的 dir()
和 help()
函数来查看函数的用法
dir()
返回一个列表包括 os模块的所有函数名
print(dir(os))
help()
返回所有os模块的所有内容
print(help(os))
这样的结果看着确实有点不太人性化
使用help
函数查看具体的函数使用方法
print(help(os.getcwd)) print(help('os.getcwd')) # 使用字符串也可以
返回函数的作用