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() 方法
由于本人水平有限,难免出现错漏之处,欢迎批评指正
- os模块简明教程(附创建目录树)
- python简明教程-os模块
- python os模块创建目录
- 简明Python 教程 --模块
- ConfigParser模块简明教程
- pandas模块简明教程
- python os模块简明文档
- os模块操作目录。
- 《简明python教程》总结(六)-- os, sys模块及其他内容
- python 下利用os模块创建目录以及巧妙使用if not os.path.exits()创建
- 简明Python教程 --- 8.模块
- 简明Python3教程 10.模块
- 简明Python3教程 10.模块
- 《简明Python教程》之模块
- Magento 新闻模块开发教程 (一) 创建骨架目录
- Git简明教程 Mac OS X
- python OS模块: 目录操作
- python os模块文件目录
- 微型四轴飞行器(7)串级PID控制器
- Android 自定义控件评星RatingBar工具类
- java转义字符
- 9种常见的Java不规范代码
- 百度富文本的使用
- os模块简明教程(附创建目录树)
- AbstractQueuedSynchronizer源码剖析(二)- 不响应中断的独占锁
- mongodb简介
- windows下编译libuv的问题。
- 在设置边距不管用的时候可以试一试
- 9.2 2048 SSL2713
- 找出连续子向量的最大和
- Json数据之Gson解析
- 【拜小白opencv】27-图像噪声2——高斯噪声