os模块简明教程(附创建目录树)

来源:互联网 发布:慈溪行知职高大学生 编辑:程序博客网 时间:2024/05/17 03:57

  • 模块简介
  • 常用功能
    • 检查平台
    • 路径变量
    • 获取当前工作目录
    • 更改当前工作目录
    • 创建目录
    • 删除目录
    • 重命名
    • 分离目录与文件名
    • 获取文件或文件名
    • 获取相对路径
    • 获取绝对路径
    • 分离文件名和扩展名
    • 连接目录与文件名
    • 检验路径是否存在
    • 判断输入路径是否是一个文件
    • 判断输入路径是否是一个目录
    • 遍历目录
  • 创建目录树
  • 参考资料

模块简介

os模块是Python中非常常用的一个模块,封装了诸多的操作系统中的文件和目录操作,可以进行检查目录、切换工作目录等,下面介绍一些经常会使用到的功能,具体介绍可自行查阅官方文档。

常用功能

在介绍常用功能之前,先展示下测试用的文件夹目录树

├─1│  ├─a.txt│  └─b.txt├─2│  ├─c.txt│  └─d.txt├─e.txt├─f.txt└─os_test.py

文件夹下有1、2两个子文件夹和e、f、os_test三个文本文件,两个子文件夹中各有两个文本文件

检查平台

os.name

>>> print(os.name)nt

返回一个字符串,表示当前使用的平台。对于Windows,返回nt,对于Linux/Unix,返回posix

路径变量

  • os.sep-路径各部分之间的分隔符。
  • os.extsep-文件名与文件扩展名之间的分隔符。
  • os.pardir-路径中表示目录树上一级的部分。
  • os.curdir-路径中当前目录的部分
>>> print(os.sep, os.extsep, os.pardir, os.curdir)\ . .. .

获取当前工作目录

os.getcwd

>>> print(os.getcwd())C:\Users\xxx\Desktop\os_test

更改当前工作目录

os.chdir()

>>> os.chdir('C:/Users/xxx/Desktop/os_test/1')>>> print(os.getcwd())C:\Users\xxx\Desktop\os_test\1

创建目录

os.mkdir

>>> os.mkdir('3')

在当前工作目录下新增了一个文件夹

├─1│  ├─a.txt│  └─b.txt├─2│  ├─c.txt│  └─d.txt├─3├─e.txt├─f.txt└─os_test.py

删除目录

os.rmdir

>>> os.mkdir('3')

删除刚刚新添加的文件夹

├─1│  ├─a.txt│  └─b.txt├─2│  ├─c.txt│  └─d.txt├─e.txt├─f.txt└─os_test.py

重命名

os.rename

>>> os.rename('1','rename_1')>>> os.rename('e.txt','rename_e.txt')

修改路径名称和文件名称

├─2│  ├─c.txt│  └─d.txt├─rename_1│  ├─a.txt│  └─b.txt├─f.txt├─os_test.py└─rename_e.txt

分离目录与文件名

os.path.split

>>> print(os.path.split('2/c.txt'))('2', 'c.txt')

返回一个二元tuple,后一个值为最后一个os.seq后面的部分,前一个值为剩余部分

获取文件或文件名

os.path.basename

>>> print(os.path.basename('2/c.txt'))c.txt

返回的值就是split方法的第二个值

获取相对路径

os.path.dirname

>>> print(os.path.dirname('2/c.txt'))2

返回的值就是split方法的第一个值

获取绝对路径

os.path.abspath

>>> print(os.path.abspath('2/c.txt'))C:\Users\xxx\Desktop\os_test\2\c.txt

分离文件名和扩展名

os.splitext

>>> print(os.path.splitext('os_test.py'))('os_test', '.py')

连接目录与文件名

os.path.join

>>> new_path = ('3','4','5')>>> print(os.path.join(*new_path))3\4\5>>> print(os.path.join(os.getcwd(),'3'))C:\Users\Yin\Desktop\os_test\3

根据输入生成新的路径,中间以os.sep分隔

检验路径是否存在

os.path.exists

>>> print(os.path.exists('1'))False>>> print(os.path.exists('2'))True

判断输入路径是否是一个文件

os.path.isfile

>>> print(os.path.isfile('2'))False>>> print(os.path.isfile('f.txt'))True

判断输入路径是否是一个目录

os.path.isdir

>>> print(os.path.isdir('2'))True>>> print(os.path.isdir('f.txt'))False

遍历目录

os.walk

>>> for root, dirs, files in os.walk(".", topdown=False):    for name in files:        print(os.path.join(root, name)).\2\c.txt.\2\d.txt.\rename_1\a.txt.\rename_1\b.txt.\f.txt.\os_test.py.\rename_e.txt>>> for root, dirs, files in os.walk(".", topdown=False):     for name in dirs:         print(os.path.join(root, name)).\2.\rename_1>>> 

该方法会产生一个产生3元的tuple (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】,可以用来便利文件夹和文件

创建目录树

在linux环境下,可以使用tree 轻易地展示目录结构,为了在Windows环境下实现这一类似的功能,这里使用os模块 来打印x像上面使用的目录树。

import osdef get_dir_list(path, placeholder=''):    # @param {path} 初始路径 {placeholder} 占位符     # @return 目录树    # 绘制需要使用的参数     BRANCH = '├─'    LAST_BRANCH = '└─'    TAB = '│  '    EMPTY_TAB = '   '    folder_list = [folder for folder in os.listdir(path) if os.path.isdir(os.path.join(path, folder))]    file_list = [file for file in os.listdir(path) if os.path.isfile(os.path.join(path, file))]    result = ''    if folder_list:        for folder in folder_list[:]:            result += placeholder + BRANCH + folder + '\n'            result += get_dir_list(os.path.join(path, folder), placeholder + TAB)    if file_list:                for file in file_list[:-1]:            result += placeholder + BRANCH + file + '\n'        result += placeholder + LAST_BRANCH + file_list[-1] + '\n'    return result

参考资料

  • os 模块
  • Python: 生成目录树
  • Python中的os.path路径模块中的操作方法总结
  • Python os.walk() 方法

由于本人水平有限,难免出现错漏之处,欢迎批评指正

原创粉丝点击