Python学习之os包使用教程详解


Posted in Python onMarch 21, 2022

今天我们来学习一下 python 的内置包 —> OS 包。OS 包拥有着普遍的操作系统功能,拥有着各种各样的函数来操作系统的驱动功能。其中最常用的就是对 路径 与 文件的操作,比如检查某个路径下是否存在某个文件,某个路径是否存在等。也可以创建、删除文件等,接下来我们就详细的看一看 OS 中关于文件的操作功能与用法。

os 模块

文件与目录函数介绍

函数名 参数 介绍 举例  返回值
getcwd 没有参数 返回当前路径 os.getcwd() 字符串
listdir path 返回指定路径下所有的文件或文件夹 os.listdir(‘c://windows’) 返回一个列表
makedir path mode 创建多级文件夹 os.makedirs(‘d://pycharm/py’) 无返回值
removedirs path 删除多级路径下的文件夹 os.removedirs(‘d://pycharm/py’) 无返回值
rename oldname、newname 将文件或文件夹重命名 os.rename(‘d://pycharm’,‘d://pycharm01’) 无返回值
rmdir path 只能删除空文件夹 os.rmdir(‘d://pycharm’) 无返回值

示例如下:

import os


current_path = os.getcwd()
print(current_path)

new_path = '%s/test01' % current_path
os.makedirs(new_path)

list_dir = os.listdir(current_path)
print(list_dir)

# >>> 执行结果如下:
# >>> /Users/user_name/PycharmProjects/XXXXX/python_package/animal		这是当前Mac系统的绝对路径,如果是WIN系统会显示磁盘符
# >>> ['cat', 'dog', 'test_time.py', '__init__.py', 'test.py', 'package_os.py', 'test01']
# >>> 列出来当前路径下的所有文件,并创建 'test01' 文件夹成功

Python学习之os包使用教程详解

这里有个需要注意的地方,如果当前路径下已经存在了要创建的 文件夹或者文件会出现如下报错。

Python学习之os包使用教程详解

上面我们只演示了创建一个文件夹,如果我们尝试创建多层级的文件夹呢?

import os


current_path = os.getcwd()
print(current_path)

new_path = '%s/test01' % current_path
# os.makedirs(new_path)

list_dir = os.listdir(current_path)
print(list_dir)

new_path02 = '%s/test02/test02-01' % current_path   # 尝试创建多级文件夹及文件
os.makedirs(new_path02)

Python学习之os包使用教程详解

注意:如果不指定创建文件夹的路径,直接利用 os.makedirs('filename') 就可以在当前脚本的默认路径下创建该文件夹,这里就不再进行演示了。大家可以自己在本地试一下。

上面我们演示了 getcwd()、listdir()、makedir() 三个函数,接下来我们演示 removedirs()、rename()、rmdir() 三个函数

import os


current_path = os.getcwd()
print(current_path)

new_path = '%s/test01' % current_path
# os.makedirs(new_path)

list_dir = os.listdir(current_path)
print(list_dir)

new_path02 = '%s/test02/test02-01' % current_path   # 尝试创建多级文件夹及文件
# os.makedirs(new_path02)
# 之所以要注销 os.makedir() 是因为,我们已经创建好了 'test01'、'test02/test02-01' ,再次执行会报错

os.removedirs('test02/test02-01')                   # 删除 test02 多级文件夹
os.renames('test.py', 'test_new.py')      # 重命名 test.py 文件夹为 test_new.py
os.rmdir('test01')                        # 删除空文件夹 test01

# >>> 执行效果如下图

Python学习之os包使用教程详解

注意:当我们使用 os.rmdir() 函数删除非空的文件夹时,是会报错的。比如我们尝试删除 dog 文件夹 就会报错 OSError: [Errno 66] Directory not empty: 'dog' , 该提示的意思是 : OSERROR - dog 是一个非空文件夹 。

以上演示的是 OS 包常用的调用文件的函数,其实OS操作文件的函数还有很多 ,大家可以尝试 使用 dir() 函数查看并尝试练习一下其他函数的应用。

path 模块

os.path 模块同样也是我们在日常开发工作中比较常用的一个模块,接下来我们看看 path 模块都有哪些较常用的函数。

​path 模块常用方法

函数名 参数 介绍 举例  返回值
exists path 文件或路径是否存在 os.path.exists(‘d://test/’) bool类型
isdir path 是否是路径 os.path.isdir(‘d://test/’) bool类型
isabs path 是否是绝对路径 os.isabs(‘test’) bool类型
isfile path 是否是文件 os.path.isfile(‘d://test.py’) bool类型
join path, path* 通过路径的’//'将其用字符串合并 os.path.join(‘d://’,‘test’) 字符串
split path 通过路径的’//'以最后一层路径为及基准切割成元组 os.path.split(‘d://test’) 元组

需要注意一点:win电脑和 mac电脑的 路径标识符不一样。 win系统为 // , mac或者linux系统为 / 。

结合我们上文 os 包常用的函数演示案例如下:

import os
import os.path


current_path = os.getcwd()			# 定义 current_path 变量获取当前脚本的绝对路径
print(current_path)					# 打印 current_path 变量
print(os.path.isabs(current_path))	# 利用 path 模块的 isabs 函数判断 current_path 是否是绝对路径 [返回结果 True]
print(os.path.isabs('animal'))		# 利用 path 模块的 isabs 函数判断 animal 是否是绝对路径 [返回结果 False , animal 是相对路径]


new_path = '%s/test1' % current_path
if os.path.exists(new_path):		# 判断 new_path 是否存在,如果存在,则删除 new_path  
    os.makedirs(new_path)

data = os.listdir(current_path)
print(data)

new_path2 = os.path.join(current_path, 'test2', 'test2_01')
print(new_path2)
# 将 'test2'、'test2_01' 与 current_path 拼接在一起,生成一个 路径形式 的字符串赋值给new_path2
# >>> 执行结果为 '/Users/XXX/PycharmProjects/python_package/test2/test2_01'


if os.path.exists(new_path2):			# 判断 new_path2 是否存在,如果不存在,则通过 os包 的 makedirs 函数创建
    os.makedirs(new_path2)
if os.path.exists('test3'):				# 判断 'test3' 是否存在,如果不存在,则通过 os包 的 makedirs 函数创建
    os.makedirs('test3')

if os.path.exists('test2/test2_01'):	# 判断 'test2/test2_01' 是否存在,如果存在,则删除 'test2/test2_01'
    os.removedirs('test2/test2_01')
    
if os.path.exists('test3'):				# 判断 'test3' 是否存在,如果存在,则将 'test3' 重命名为 'test3_new'
    os.rename('test3', 'test3_new')
    
if os.path.exists('test1'):				# 判断 'test1' 是否存在,如果存在,则删除 'test1'
    os.rmdir('test1')

current_path = current_path + '/package_os.py'
print(os.path.isfile(current_path))		
# 利用 path模块 的 isfile函数 判断 current_path 是否是一个文件[返回结果为 True ]

print(os.path.split(current_path))		
# 利用 path模块 的 split函数 将 'package_os.py' 与 路径分割开; 实际工作中经常通过这种方式将带有文件的路径进行分割
# >>> 执行结果为:('/Users/XXX/PycharmProjects/python_package', 'package_os.py')

print(os.path.isdir(os.path.split(current_path)[0]))
# 利用 path模块 的 isdir函数 判断 current_path 被 split 函数分割后 第一个元素是不是路径 [返回结果为 True ]

print(dir(os.path))
# 通过 dir()函数 查看 当前 os.path 模块更多的功能;[可以自己尝试一下 os.path 更多的功能]

以上就是Python学习之os包使用教程详解的详细内容,更多关于Python os包的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python中的匿名函数使用简介
Apr 27 Python
Python通过select实现异步IO的方法
Jun 04 Python
python修改字典内key对应值的方法
Jul 11 Python
python 写入csv乱码问题解决方法
Oct 23 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
Apr 02 Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 Python
如何使用python进行pdf文件分割
Nov 11 Python
Python字符串中删除特定字符的方法
Jan 15 Python
什么是python的列表推导式
May 26 Python
python 通过 pybind11 使用Eigen加速代码的步骤
Dec 07 Python
Pandas自定义选项option设置
Jul 25 Python
Python&Matlab实现樱花的绘制
Apr 07 Python
分享几种python 变量合并方法
Mar 20 #Python
python 使用tkinter与messagebox写界面和弹窗
Mar 20 #Python
python中的sys模块和os模块
Mar 20 #Python
python_tkinter事件类型详情
Mar 20 #Python
再谈python_tkinter弹出对话框创建
python_tkinter弹出对话框创建
Mar 20 #Python
Python读写yaml文件
Mar 20 #Python
You might like
用PHP函数解决SQL injection
2006/10/09 PHP
如何将数据从文本导入到mysql
2006/10/09 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
2013/06/27 PHP
解读PHP中的垃圾回收机制
2015/08/10 PHP
Symfony2创建页面实例详解
2016/03/18 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
Laravel重定向,a链接跳转,控制器跳转示例
2019/10/22 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
javascript GUID生成器实现代码
2009/10/31 Javascript
修改js Calendar日历控件 兼容IE9/谷歌/火狐
2013/01/04 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
javascript通过元素id和name直接取得元素的方法
2015/04/28 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
jQuery实现返回顶部功能
2016/02/23 Javascript
让你一句话理解闭包(简单易懂)
2016/06/03 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
jquery.tableSort.js表格排序插件使用方法详解
2020/08/12 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
基于VUE选择上传图片并页面显示(图片可删除)
2017/05/25 Javascript
创建简单的node服务器实例(分享)
2017/06/23 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
微信小程序 slot踩坑的解决
2019/04/01 Javascript
微信小程序的mpvue框架快速上手指南
2019/05/15 Javascript
vue实现计算器功能
2020/02/22 Javascript
vue图片裁剪插件vue-cropper使用方法详解
2020/12/16 Vue.js
[02:42]决战东方!DOTA2亚洲邀请赛重启荣耀之争
2017/03/17 DOTA
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
ubuntu系统下 python链接mysql数据库的方法
2017/01/09 Python
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
幼儿园中秋节活动方案2013
2014/01/29 职场文书
新闻发布会策划方案
2014/06/12 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
2015年监理工作总结范文
2015/04/07 职场文书
2015年感恩父亲节活动策划方案
2015/05/05 职场文书
Mysql - 常用函数 每天积极向上
2021/04/05 MySQL
web前端之css水平居中代码解析
2021/05/20 HTML / CSS