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网页解析利器BeautifulSoup安装使用介绍
Mar 17 Python
Python元组拆包和具名元组解析实例详解
Mar 26 Python
Python中偏函数用法示例
Jun 07 Python
对TensorFlow的assign赋值用法详解
Jul 30 Python
Window环境下Scrapy开发环境搭建
Nov 18 Python
Django项目创建到启动详解(最全最详细)
Sep 07 Python
Python装饰器使用你可能不知道的几种姿势
Oct 25 Python
python tkinter 设置窗口大小不可缩放实例
Mar 04 Python
python实现移动木板小游戏
Oct 09 Python
如何使用 Flask 做一个评论系统
Nov 27 Python
pytorch 两个GPU同时训练的解决方案
Jun 01 Python
python疲劳驾驶困倦低头检测功能的实现
Apr 04 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 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
2015/12/21 PHP
php中通过eval实现字符串格式的计算公式
2017/03/18 PHP
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
禁止空格提交表单的js代码
2013/11/17 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
2014/07/02 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
node.js操作mongodb学习小结
2015/04/25 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
Vue.js每天必学之计算属性computed与$watch
2016/09/05 Javascript
vue.js 表格分页ajax 异步加载数据
2016/10/18 Javascript
jQuery实现简单的手风琴效果
2020/04/17 jQuery
Vue slot用法(小结)
2018/10/22 Javascript
layui表格分页 记录勾选的实例
2019/09/02 Javascript
node事件循环和process模块实例分析
2020/02/14 Javascript
在vue中获取wangeditor的html和text的操作
2020/10/23 Javascript
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
2015/04/05 Python
Python爬虫之网页图片抓取的方法
2018/07/16 Python
利用Django-environ如何区分不同环境
2018/08/26 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
Python pandas用法最全整理
2019/08/04 Python
解决django同步数据库的时候app models表没有成功创建的问题
2019/08/09 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
详解CSS 3 中的 calc() 方法
2018/01/12 HTML / CSS
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
药学专业大学生个人的自我评价
2013/11/04 职场文书
传媒专业推荐信范文
2013/11/23 职场文书
财务总经理岗位职责
2014/02/16 职场文书
学校安全生产承诺书
2014/05/23 职场文书
2015元旦晚会主持词(开场白+结束语)
2014/12/14 职场文书
作文评语集锦
2014/12/25 职场文书
追讨欠款律师函
2015/05/27 职场文书
陶瓷类经典广告语集锦
2019/10/25 职场文书