【python】os模块
os
即 operating system
,os
模块提供的就是各种 Python 程序与操作系统进行交互的接口。
读写文件建议使用内置函数
with open()
。
导入 os
模块
import os
列出路径——os.listdir()
os.listdir(path='.')
列出目录下的全部路径及文件。
函数返回值是一个列表,其中元素为字符串类型,分别是各路径名和文件名。
常用来遍历某个文件夹中文件。
# 获取 file_dir 目录下所有文件而非文件夹的名称列表。
def get_filelists(file_dir='.'):
list_directory = os.listdir(file_dir)
filelists = []
for directory in list_directory:
if(os.path.isfile(directory)):
filelists.append(directory)
return filelists
新建路径——os.mkdir()
os.mkdir(path)
新建一级路径。
os.makedirs(path)
新建多级路径,会分别新建指定路径经过的中间路径,直到最后创建出末端的“叶子路径”。
os.mkdir('test_os_mkdir')
os.makedirs('test_os_makedirs/test')
删除文件——os.remove()
os.remove(path)
删除文件。
os.rmdir(path)
删除目录。
os.removedirs(path)
从最下级目录开始,逐级删除指定的路径,一旦遇到非空目录即停止。
重命名——os.rename()
os.rename(src, dst)
将文件或路径重命名。
如果指定的目标路径在其他目录下,该函数还可实现文件或路径的“剪切并粘贴”功能。
无论是 "重命名“ 还是 ”剪切并粘贴“,中间路径都必须存在,否则会抛出异常。
os.renames()
,能够创建缺失的中间路径。
注意,这两种情况下,如果函数执行成功,都会调用os.removedir()
函数来递归删除源路径的最下级目录。
切换当前工作路径——os.chdir()
os.chdir(path)
切换当前工作路径为指定路径。
通过该函数可以方便地跨目录读写文件和调用模块,不必再反复将同一个文件在各个目录之间复制粘贴运行。
os.getcwd()
可以获取当前工作路径。
os.path模块
os.path
中的函数基本上是纯粹的字符串操作,按路径的通用格式对字符串进行处理,并不会试图访问路径。
os.path
模块中封装了很多字符串操作,我们都可以手动实现,但是在实现时都必须考虑具体操作系统的文件系统分隔符问题。os.path
模块是根据系统类型从另一个模块导入的,比如os.name
值为 nt
,则在os
模块中执行 import ntpath as path
;如果 os.name
值为 posix
,则导入 posixpath
。正因如此,os.path
使我们不用过多关注文件系统分隔符的问题,只需聚焦在对字符串的操作上。
连接路径——os.path.join()
os.path.join(path, *path)
将多个路径连接为一个路径,实际上是将多个字符串用系统分隔符连接起来。
如果传入的路径中存在 “绝对路径”格式的字符串,只有最后一个 ”绝对路径“ 及其之后的参数才会进行连接。
os.path.join('python', 'os', 'path', 'join')
# 'python\\os\\path\\join'
os.path.join('python', 'os', 'd:/','path', 'join')
# 'd:/path\\join'
os.path.join('python', 'os', 'd:/', 'path', 'e:/', 'join')
# 'e:/join'
路径规范化——os.path.abspath()
os.path.abspath(path)
将传入路径规范化,返回一个相应的绝对路径格式的字符串。
"绝对路径格式" 指的是一个字母加冒号,之后跟分隔符和字符串序列的格式 。
当传入路径符合 ”绝对路径“的格式时,该函数仅将路径分隔符替换为适应当前系统的字符。
os.path.abspath('d:/python/os/path/abspath')
# 'd:\\python\\os\\path\\abspath'
当传入路径不符合 ”绝对路径“ 的格式时,该函数会自动获取当前工作路径,并使用 os.path.join()
函数将其与传入路径连接为一个新的路径字符串。
# 假设当前工作路径为 'C:\\Users\\zy'
os.path.abspath('path/abspath')
# 'C:\\Users\\zy\\path\\abspath'
获取”基名“——os.path.basename()
os.path.basename(path)
返回传入路径的”基名“,即传入路径的最下级目录,也就是最后一个分隔符之后的子字符串。
os.path.basename('python\\os\\path\\basename')
# 'basename'
os.path.basename('python\\os\\path\\basename\\')
# ''
获取目录名——os.path.dirname()
os.path.dirname(path)
返回的是最后一个分隔符前的整个字符串,也就是目录名。
os.path.dirname('python\\os\\path\\dirname')
# 'python\\os\\path'
拆分路径名——os.path.split()
os.path.split(path)
将传入路径以最后一个分隔符为界,拆分成两个字符串,并以元组的形式返回。
os.path.split('python\\os\\path\\split')
# ('python\\os\\path', 'split')
不难看出 os.path.basename(p)
和 os.path.dirname(p)
的返回值分别是 os.path.split(p)
返回值的第一个和第二个元素。通过os.path.join()
又可以将它们组合成原来的路径。
测试路径存在——os.path.exists()
os.path.exists(path)
测试路径是否存在,存在返回 True
,否则返回 False
。
一般的用法是在需要持久化保存某些数据的场景,为避免重复创建某个文件,需要在写入前用该函数检测一下相应文件是否存在,若不存在则新建,若存在则在文件内容之后增加新的内容。
判断绝对路径——os.path.isabs()
os.path.isabs(path)
判断传入路径是否为绝对路径。
注意:该函数仅检测格式,不对路径有效性进行任何核验。
判断文件存在——os.path.isfile()
os.path.isfile(p)
判断传入路径是否为文件。
注意:该函数会核验路径的有效性。
判断路径存在——os.path.isdir()
os.path.isdir(p)
判断传入路径是否为路径。
注意:该函数会核验路径的有效性。
本文来自博客园,作者:hzyuan,转载请注明原文链接:https://www.cnblogs.com/hzyuan/p/17342795.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)