【python】os模块

osoperating systemos 模块提供的就是各种 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) 判断传入路径是否为路径。

注意:该函数会核验路径的有效性。

posted @   hzyuan  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示