Python必知必会之os模块实例详解
作者:小鱼干儿? 发布时间:2023-06-09 22:31:07
Python os 模块
os是“operating system”的缩写,os模块提供各种 Python 程序与操作系统进行交互的接口,使用os模块,一方面可以方便地与操作系统进行交互,另一方面页可以极大增强代码的可移植性
注意 一定要使用 import os 而不是 from os import * 。这将避免内建的 open() 函数被 os.open() 隐式替换掉,因为它们的使用方式大不相同。
os模块的常用操作
import os
os.getcwd() 获取当前工作路径
os.getcwd()
os.chdir() 切换工作路径
# 将工作目录切换到'D:/Pycharm'
os.chdir('D:/Pycharm')
print(os.getcwd()) #D:\Pycharm
os.environ 获取所有的环境变量,
os.environ
os.getlogin()返回通过控制终端进程进行登录的用户名
os.getlogin()
os.name 返回python运行的环境系统
os.name
'''
返回值的意思
posix Linux 和 Mac OS
nt Windows
java Java 虚拟机环境
'''
os.mkdir 创建一个新的文件价夹,不能创建多级的文件夹
当文件夹已经存在时会报错FileExistsError
创建多级的文件夹会报错FileNotFoundError
# 在当前目录下创建一个名为test的文件夹
os.mkdir('test')
# 报错内容
# FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'test'
os.makedirs() 创建多级目录
# 创建a文件夹,并且在a文件夹下创建b文件夹
os.makedirs('a/b')
os.rmdir() 删除空文件夹
如果如果删除的文件夹非空OSError: [WinError 145] 目录不是空的。'filename'
# 删除文件夹a
os.rmdir('a')
os.removedirs() 递归删除目录。
工作方式类似于 rmdir(),不同之处在于,如果成功删除了末尾一级目录,removedirs() 会尝试依次删除 path 中提到的每个父目录,直到抛出错误为止(但该错误会被忽略,因为这通常表示父目录不是空目录)
# 删除文件夹 文件夹 a及子文件夹b
os.removedirs('a/b')
os.remove() 删除文件
# 删除文件a.txt
os.remove('a.txt')
os.rename(src, dst) 将文件或路径(文件夹)重命名,以及移动文件夹
src 原路径,dst修改后的命名
只能重命名原路径 src
最后的路径或文件的名字,中间路径都必须要存在,否则就会抛出FileNotFoundError
# 将文件名b修改成文件名c
os.rename('a/b','a/c')
# 文件目录: a/c c文件夹是a文件夹的子文件夹
# 将文件c移动到和a同级目录下
os.rename('a/c','c')
# 文件目录: a/c c文件夹是a文件夹的子文件夹
# 将文件c移动到和a同级目录下并改名为'newname'
os.rename('a/c','newname')
# 文件目录: a/c/w.txt
# 将文件w.txt修改成ww.txr
os.rename('a/c/w.txt','a/c/ww.txt')
# 同样也可以移动文件并重名的方式一样,用法和移动文件并重名的方式一样
os.renames(old, new)递归重命名目录或文件。工作方式类似 rename(),除了会首先创建新路径所需的中间目录。重命名后,将调用 removedirs() 删除旧路径中不需要的目录。
# 重命名可以重命名中间路径(实际上是,先新建新的目录,然后判断原目录是否可以删除,如果可以删除,就删除)
os.renames('a/b/a.txt','a/c/aaa.txt')
os.path模块
os.path中的函数基本上是纯粹的字符串操作。换句话说,传入该模块函数的参数甚至不需要是一个有效路径,该模块也不会试图访问这个路径,而仅仅是按照“路径”的通用格式对字符串进行处理
os.path 获取当前环境的路径
os.path
os.path.abspath(path) 返回路径 path 的绝对路径
# 根据相对路径返回绝对路径
print(os.path.abspath('a/c/aaa.txt'))
os.path.exists(path) 判断该路径或文件是否存在
path:路径
返回布尔值,True,False
# 检查文件是否存在
print(os.path.exists('a/c'))
# 检查aaa.txt文件是否存在
print(os.path.exists('a/c/aaa.txt'))
os.path.getatime(path)返回path的最后访问时间,返回的时间为秒(时间戳),可以利用tiem转换成常用的时间格式
# 返回文件a最后的访问时间
print(os.path.getatime('a'))
t = os.path.getatime('a') # 获取时间戳
tupTime = time.localtime(t) # 将时间戳转换成本地时间
stadardTime = time.strftime("%Y-%m-%d %H:%M:%S", tupTime) # 转换成对应的时间格式
print(stadardTime) # 2022-09-18 11:44:28
os.path.getctime(path) 在windos下获取文件的创建时间,在Unix返回的是最后的修改时间
# 获取aaa.txt文件的创建时间(windows)
t = os.path.getctime('a/c/aaa.txt')
os.path.getsize(path) 获取文件的大小
# 获取文件aaa.txt的大小
os.path.getsize('a/c/aaa.txt')
os.path.split() 将路径 path 拆分为一对,即 (head, tail),其中,tail 是路径的最后一部分,而 head 里是除最后部分外的所有内容。tail 部分不会包含斜杠,如果 path 以斜杠结尾,则 tail 将为空。如果 path 中没有斜杠,head 将为空。如果 path 为空,则 head 和 tail 均为空。
返回的部分是一个元组里面由两个元素
a = os.path.split('D:/aa/bb')
print(type(a)) # <class 'tuple'>
print(a) # ('D:/aa', 'bb') 头部和尾部
# 当最后为'/‘时
a = os.path.split('D:/aa/bb/')
print(a) # ('D:/aa/bb', '') 尾部为空
# 当路径path中没有路径的时候
a = os.path.split('aa')
print(a) # ('', 'aa') # 头部为空
# 当传入的路径为空时
a = os.path.split( '')
print(a) # ('', '') # 头部和尾部均为空
os.path.isfile() 判断传入的文件是否存在 返回布尔值
# 判断文件是否存在
os.path.isfile('a/c/aaa.txt')
os.path.isdir() # 判断文件路径是否存在 返回布尔值
# 判断路径a/c是否存在
os.path.isdir('a/c')
os.open()模块
os.open() 打开文件的一系列操作
用法和基本的open函数很类似
注解 本函数适用于底层的 I/O。常规用途请使用内置函数 open(),该函数的 read() 和 write() 方法(及其他方法)会返回 文件对象。要将文件描述符包装在文件对象中,请使用 fdopen()。
os.open(file, flags[, mode])
'''
file 文件名
flags 模式
mode 可选参数, mode 设置其权限状态
'''
flags – 该参数可以是以下选项,多个使用 “|” 隔开:
os.O_RDONLY: 以只读的方式打开
os.O_WRONLY: 以只写的方式打开
os.O_RDWR : 以读写的方式打开
os.O_NONBLOCK: 打开时不阻塞
os.O_APPEND: 以追加的方式打开
os.O_CREAT: 创建并打开一个新文件
os.O_TRUNC: 打开一个文件并截断它的长度为零(必须有写权限)
os.O_EXCL: 如果指定的文件存在,返回错误
os.O_SHLOCK: 自动获取共享锁
os.O_EXLOCK: 自动获取独立锁
os.O_DIRECT: 消除或减少缓存效果
os.O_FSYNC : 同步写入
os.O_NOFOLLOW: 不追踪软链接
在写入文件时不能直接写入字符串否则会报错TypeError: a bytes-like object is required, not 'str'
# 打开文件
fd = os.open("foo.txt", os.O_RDWR|os.O_CREAT ) # 模式可以并存中间用 | 隔开
# 写入字符串
a = b"This is test"
os.write(fd,a)
# 关闭文件
os.close(fd)
print("关闭文件成功!!")
最后的补充
最后如果忘记了os的用法可以使用内置的 dir()
和 help()
函数来查看函数的用法
dir()
返回一个列表包括 os模块的所有函数名
print(dir(os))
help()
返回所有os模块的所有内容
print(help(os))
这样的结果看着确实有点不太人性化
使用help
函数查看具体的函数使用方法
print(help(os.getcwd))
print(help('os.getcwd')) # 使用字符串也可以
返回函数的作用
来源:https://blog.csdn.net/qq_52007481/article/details/126918076
猜你喜欢
- 生成方式Python中想要自动生成 model文件可以通过 sqlacodegen这个命令来生成对应的model文件sqlacodegen
- Python对不可变序列进行重复拼接操作效率会很低,因为每次都会生成一个新的对象,解释器需要把原来对象中的元素先复制到新的对象里,然后再追加
- 看到这个需求的时候就在暗爽,又可以搞定一个知识点了。哈哈,一天的奋斗之后,果然有所收获,而且经过怿飞的指点,在跨域问题解决上还有所突破(不通
- 基本思路使用GDAL创建Shapefile数据的基本步骤如下:使用osgeo.ogr.Driver的CreateDataSource()方法
- 本文实例总结了Python实现string字符串连接的方法。分享给大家供大家参考,具体如下:以下基于python 2.7版本,代码片段真实有
- 用于序列化的两个模块json:用于字符串和Python数据类型间进行转换pickle: 用于python特有的类型和python的数据类型间
- 最近真的喜欢上了用xheditor这个在线编辑器,但是美中不足的是我发现它暂时还不能取代FCKeditor,因为没有在线上传功能啊!当然,F
- 一、前言前几天,在写一个与差分隐私相关的简单程序时,我发现了一些奇怪的东西:相对于其他的随机数生成函数,Python的random.rand
- 当训练样本不均匀时,我们可以采用过采样、欠采样、数据增强等手段来避免过拟合。今天遇到一个3d点云数据集合,样本分布极不均匀,正例与负例相差4
- 目录前言什么是装饰器Python 函数的基本特性函数名的本质:将函数作为变量使用:进一步实现装饰器使用Python装饰器语句:总结前言在 p
- 能够为数据库数据提供的最简单的用户界面之一就是窗体,窗体可以一次性呈现出来自同一记录的各个域。本文通过python3+pyqt5改写实现了p
- 我就废话不多说了,直接上代码吧!import torchimport torch.nn.functional as Fimport nump
- for splitValue in set(dataset[:, featureIndex].tolist()):首先set是一个无序,无重
- 本文实例为大家分享了Python使用Pillow添加水印的具体代码,供大家参考,具体内容如下python数据分析得到的图片,并对照片添加水印
- 本文实例讲述了Python基于动态规划算法计算单词距离。分享给大家供大家参考。具体如下:#!/usr/bin/env python#codi
- 函数局部变量 全局变量 及其作用域#简单类型(int str等)变量的局部变量与全局变量及其作用域的关系name = "xxx&q
- 今天在群(CSS森林:30247792)里讨论了border的样式写法,发现border的写法还真是灵活,做了一下总结,希望对大家有用:bo
- 一、文件基本的操作1、open() 打开文件open() 方法用于打开一个文件,并返回File文件对象,在对文件进行处理过程都需要使用到这个
- 不知道做网络程序的朋友是否重视COOKIES作用域对于多域名或 主域与WWW二级域名同时共用一站点,设置Cookies的作用域,让整个网站用
- 论坛有人问起如何获取读取CSS属性值,就写了下面这段兼容各浏览器的获取HTML元素的css属性值函数:function getSt