Python必知必会 os 模块详解(二)

简介: Python必知必会 os 模块详解

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'))   # 使用字符串也可以


返回函数的作用


eee1b1ade73e4486b5dd96f35b0139c3.png



相关文章
|
22天前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
41 4
|
2天前
|
Python
Python Internet 模块
Python Internet 模块。
99 74
|
20天前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
103 63
|
21天前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
21天前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
28天前
|
JSON Linux 数据格式
Python模块:从入门到精通,只需一篇文章!
Python中的模块是将相关代码组织在一起的单元,便于重用和维护。模块可以是Python文件或C/C++扩展,Python标准库中包含大量模块,如os、sys、time等,用于执行各种任务。定义模块只需创建.py文件并编写代码,导入模块使用import语句。此外,Python还支持自定义模块和包,以及虚拟环境来管理项目依赖。
Python模块:从入门到精通,只需一篇文章!
|
22天前
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
35 5
|
21天前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
|
1月前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
43 5
|
1月前
|
Java 程序员 开发者
Python的gc模块
Python的gc模块