Python必知必会 os 模块详解

这篇具有很好参考价值的文章主要介绍了Python必知必会 os 模块详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • ❤️ 作者简介:大家好我是小鱼干儿♛是一个热爱编程、热爱算法的大三学生,蓝桥杯国赛二等奖获得者
  • 🐟 个人主页 :https://blog.csdn.net/qq_52007481
  • 个人社区:【小鱼干爱编程】
  • 🔥 算法专栏:算法竞赛进阶指南
  • 💯 刷题网站:市面上的刷题网站有很多如何选择一个适合自己的网站呢,博主给这里推荐一款我常用的刷题网站 👉点击跳转

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))

这样的结果看着确实有点不太人性化
python os模块详解,python,python,pycharm,开发语言,1024程序员节
使用help函数查看具体的函数使用方法

print(help(os.getcwd))
print(help('os.getcwd'))   # 使用字符串也可以

返回函数的作用
python os模块详解,python,python,pycharm,开发语言,1024程序员节文章来源地址https://www.toymoban.com/news/detail-779013.html

到了这里,关于Python必知必会 os 模块详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySql必知必会

    Buffer Pool基本概念 Buffer Pool:缓冲池,简称BP。其作用是用来缓存表数据与索引数据,减少磁盘IO操作,提升效率。 Buffer Pool由 缓存数据页(Page) 和 对缓存数据页进行描述的 控制块 组成, 控制块中存储着对应缓存页的所属的 表空间、数据页的编号、以及对应缓存页在Buffer Poo

    2024年01月22日
    浏览(49)
  • 必知必会Java

    你好,我是阿光。 最近想着把工作中使用过的java命令都梳理一下,方便日后查阅。虽然这类文章很多,但自己梳理总结后,还是会有一些新的收获。这也是这篇笔记的由来。 今天先聊聊 jps 命令。 jps 命令是JDK提供的一个工具,用于查看目标系统上的Java进程基本信息(进程

    2024年02月05日
    浏览(37)
  • 聊聊Flink必知必会(五)

    聊聊Flink的必知必会(三) 聊聊Flink必知必会(四) 从源码中,根据关键的代码,梳理一下Flink中的时间与窗口实现逻辑。 对数据流执行 keyBy() 操作后,再调用 window() 方法,就会返回 WindowedStream ,表示分区后又加窗的数据流。如果数据流没有经过分区,直接调用 window() 方法则会返

    2024年02月05日
    浏览(54)
  • 聊聊Flink必知必会(六)

    Flink是一个分布式系统,需要有效地分配和管理计算资源才能执行流应用程序。它集成了所有常见的集群资源管理器,如Hadoop YARN和Kubernetes,但也可以设置为作为一个独立的集群运行,甚至作为一个库。 Flink运行时由两种类型的进程组成:一个JobManager和一个或多个taskmanager。

    2024年02月04日
    浏览(44)
  • MySQL必知必会(初级篇)

    数据库 (DataBase,DB),是统一管理的、长期存储在计算机内的、有组织的相关数据的集合。特点是数据见联系密切、冗余度小、独立性高、易扩展,并且可以为各类用户共享。 MySQL :是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的

    2023年04月08日
    浏览(37)
  • 聊聊Flink必知必会(七)

    虽然数据流中的许多操作一次只查看一个单独的事件(例如事件解析器),但某些操作会记住多个事件的信息(例如窗口算子)。 这些操作称为有状态的(stateful)。 有状态操作的一些示例: 当应用程序搜索某些事件模式(event patterns)时,状态(state)将存储迄今为止遇到的事件序

    2024年02月04日
    浏览(37)
  • 聊聊Flink必知必会(二)

    Flink是一个有状态的流处理框架,因此需要对状态做持久化,Flink定期保存状态数据到存储空间上,故障发生后从之前的备份中恢复,这个过程被称为Checkpoint机制。而Checkpoint为Flink提供了Exactly-Once的投递保障。 流处理是一个数据不断输入的过程,为了更好更方便的快照,需要

    2024年02月08日
    浏览(33)
  • ChatGPT入门必知必会

    更多文章欢迎关注公众号: stackoveriow 2023年是真正意义上的AI之年,因为ChatGPT 2007年,iPhone开启了智能手机时代, 2023年,我们迎来了人工智能时代,我们正处于历史的大转折点上,这也许是启蒙运动级别的思想和社会转折,工业革命级别的生产和生活转折 。继22年12月份从GP

    2023年04月18日
    浏览(61)
  • 《SQL 必知必会》全解析

    不要哀求,学会争取。若是如此,终有所获。 原文:https://mp.weixin.qq.com/s/zbOqyAtsWsocarsFIGdGgw 你是否还在烦恼 SQL 该从何学起,或者学了 SQL 想找个地方练练手?好巧不巧,最近在工作之余登上牛客,发现了牛客不知道啥时候上线了SQL 必知必会的练习题。 《SQL 必知必会》作为麻

    2024年02月08日
    浏览(35)
  • 《MySQL 必知必会》课程笔记(三)

    创建和修改数据表,是数据存储过程中的重要⼀环。 我们不仅需要把表创建出来,还需要正确地设置限定条件,这样才能确保数据的一致性和完整性。 同时,表中的数据会随着业务需求的变化而变化,添加和修改相应的字段也是常见的操作。 首先,我们要知道 MySQL 创建表的

    2024年02月03日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包