纯净版 - python基础模块之OS模块的学习笔记

纯净版 - python基础模块之OS模块的学习笔记

redballoon
2023-03-17 / 0 评论 / 14 阅读 / 正在检测是否收录...

OS 模块的使用

封面图

导入模块

import os
# 避免使用的方法 from os import * 因为这会与内置函数open() 起冲突,从而引起意料之外的结果。

os模块的常用操作

  • 1.获取当前工作的路径
print(os.getcwd())
# out:  D:\pythonProjects\pythonBasic\os模块
  • 2.指定路径为当前工作路径
os.chdir('D:/pythonProjects')  
print(os.getcwd())
# out: D:\pythonProjects
  • 3.创建一个新的文件夹,不能创建多层级的文件夹(目录)
# 当文件已存在时,无法创建该文件。
os.mkdir('test1')
  • 4.创建多层级文件夹(目录)
os.makedirs('cdd/dd')
  • 5.删除空文件夹
# 删除空文件夹 如果文件夹不是空的就会报错:目录不是空的。
os.rmdir('test')
  • 6.递归删除目录
# 工作方式类似于 rmdir(),不同之处在于,如果成功删除了末尾一级目录,removedirs() 会尝试依次删除 path 中提到的每个父目录,直到抛出错误为止(但该错误会被忽略,因为这通常表示父目录不是空目录)
os.removedirs(os.path.join('cdd', 'dd'))
  • 7.删除文件
os.remove('dd.txt')
  • 8.文件或路径(文件夹)重命名和移动文件夹
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中的函数基本上是纯粹的字符串操作。换句话说,传入该模块函数的参数甚至不需要是一个有效路径,该模块也不会试图访问这个路径,而仅仅是按照“路径”的通用格式对字符串进行处理
  • 9.返回路径 path 的绝对路径
print(os.path.abspath('demo.txt'))
# out: D:\pythonProjects\pythonBasic\os模块\demo.txt
  • 10.判断该路径或文件是否存在 (Bool)
print(os.path.exists('demo.txt'))
# out: True
  • 11.获取文件的最近访问时间
# 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
  • 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
  • 13.获取文件的大小
# 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')
  • 15.判断路径是否为文件 返回布尔值
# os.path.isfile() 判断路径是否为文件 返回布尔值
print(os.path.isfile('demo.txt'))
# out: True
  • 16.判断路径是否为目录 返回布尔值
# os.path.isdir() 判断路径是否为目录 返回布尔值
print(os.path.isdir('test'))
# out: True
  • 17.把目录和文件名合成一个路径 join
# os.path.join(path1[, path2[, ...]]) 将传入的路径进行拼接
print(os.path.join('test', 'test2', 'xxx.txt'))
# out: test\test2\xxx.txt
  • 18.递归查找目录下所有的文件夹和文件
# os.path.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']
'''第二结果就像是继续点开文件夹看看还有没有文件夹和文件,有文件夹就继续往下点开'''
0

评论 (0)

取消