OS 模块的使用
导入模块
import os
# 避免使用的方法 from os import * 因为这会与内置函数open() 起冲突,从而引起意料之外的结果。
os模块的常用操作
print(os.getcwd())
# out: D:\pythonProjects\pythonBasic\os模块
os.chdir('D:/pythonProjects')
print(os.getcwd())
# out: D:\pythonProjects
- 3.创建一个新的文件夹,不能创建多层级的文件夹(目录)
# 当文件已存在时,无法创建该文件。
os.mkdir('test1')
os.makedirs('cdd/dd')
# 删除空文件夹 如果文件夹不是空的就会报错:目录不是空的。
os.rmdir('test')
# 工作方式类似于 rmdir(),不同之处在于,如果成功删除了末尾一级目录,removedirs() 会尝试依次删除 path 中提到的每个父目录,直到抛出错误为止(但该错误会被忽略,因为这通常表示父目录不是空目录)
os.removedirs(os.path.join('cdd', 'dd'))
os.remove('dd.txt')
os.rename(src, dst)
# src 原路径,dst修改后的命名
# 只能重命名原路径src 最后的路径或文件的名字,中间路径都必须要存在,否则就会抛出FileNotFoundError
# os.rename('test.txt', 'demo.txt') # 重命名
# os.rename(os.path.join('test', 'test.txt'), 'test.txt') # 移动
os.path模块
os.path中的函数基本上是纯粹的字符串操作。换句话说,传入该模块函数的参数甚至不需要是一个有效路径,该模块也不会试图访问这个路径,而仅仅是按照“路径”的通用格式对字符串进行处理
print(os.path.abspath('demo.txt'))
# out: D:\pythonProjects\pythonBasic\os模块\demo.txt
print(os.path.exists('demo.txt'))
# out: True
# os.path.getatime(path) 返回 path 所指文件的最近访问时间(浮点型秒数)即time时间戳
print(os.path.getatime('demo.txt'))
# out: 1678982202.702731
t = os.path.getatime('demo.txt')
sys_time = time.localtime(t)
formatter_time = time.strftime('%Y-%m-%d %H:%M:%S', sys_time)
print(formatter_time)
# out: 2023-03-17 16:04:12
# os.path.getctime(path) 在windos下获取文件的创建时间,在Unix返回的是最后的修改时间
print(os.path.getctime('demo.txt'))
# out: 1678981495.357391
t = os.path.getctime('demo.txt')
tupTime = time.localtime(t) # 将时间戳转换成本地时间
format_time = time.strftime("%Y-%m-%d %H:%M:%S", tupTime) # 转换成对应的时间格式
print(format_time)
# out: 2023-03-16 23:44:55
# os.path.getsize(path) 获取文件的大小
print(os.path.getsize('demo.txt'))
# out: 127 (字节)
- 14.os.path.split(path) 把路径分割成 dirname 和 basename,返回一个元组
print(os.path.split(os.path.join('test', 'test.txt')))
# out: ('test', 'test.txt')
print(os.path.split('test/test2/demo3.txt'))
# out: ('test/test2', 'demo3.txt')
# os.path.isfile() 判断路径是否为文件 返回布尔值
print(os.path.isfile('demo.txt'))
# out: True
# os.path.isdir() 判断路径是否为目录 返回布尔值
print(os.path.isdir('test'))
# out: True
# os.path.join(path1[, path2[, ...]]) 将传入的路径进行拼接
print(os.path.join('test', 'test2', 'xxx.txt'))
# out: test\test2\xxx.txt
# os.walk(path, visit, arg) 会递归的寻找路径下所有子文件夹和文件
print(os.walk('test'))
# out: <generator object walk at 0x0000028FB505EC10> 返回的是一个生成器 (dirpath, dirnames, filenames)
# 这里设置个目录树
'''
|--test
|--test2
|--demo3.txt
|--demo2.txt
'''
for path, dirname, filename in os.walk(r'D:\pythonProjects\pythonBasic\os模块\test'):
print(path, dirname, filename)
# out: D:\pythonProjects\pythonBasic\os模块\test ['test2'] ['demo2.txt']
'''这里第一个返回结果就像在当前目录下(D:\pythonProjects\pythonBasic\os模块\test)点开之后看到的所有文件夹和文件'''
# out: D:\pythonProjects\pythonBasic\os模块\test\test2 [] ['demo3.txt']
'''第二结果就像是继续点开文件夹看看还有没有文件夹和文件,有文件夹就继续往下点开'''