python的os包常用函数

os模块提供了与操作系统交互的接口,如获取当前工作路径、遍历目录、创建文件夹、处理路径等。os.getcwd()返回当前工作路径,os.listdir()列出目录下所有文件和路径,os.walk()用于遍历目录树,os.mkdir()创建文件夹,os.path.basename()和os.path.dirname()分别获取路径的最后部分和除最后部分外的路径,os.path.split()分割路径,os.path.join()组合路径,os.path.relpath()计算相对路径,os.path.isdir()和os.path.isfile()判断路径是目录还是文件。


  os是“operating system”的缩写,顾名思义,os模块提供各种 Python 程序与操作系统进行交互的接口。通过使用os模块,一方面可以方便地与操作系统进行交互,另一方面也可以极大增强代码的可移植性。
  本文整理总结os的常用函数,文档不断更新中···

1.获取当前工作路径

import os
os.getcwd() # 返回该文件所在的位置。

2.获取当前目录下的所有路径和文件

os.listdir(file_path) # 函数返回值是一个列表,其中元素为路径名和文件名,可以用在需要遍历某个文件夹中所有文件的情况。

3.遍历目录数

  遍历目录树的函数os.walk(path)。它返回一个生成器对象,可以用于遍历指定目录及其子目录中的所有文件和文件夹。

for root, dirs, files in os.walk('path'):
    # root表示当前正在遍历的目录路径
    # dirs表示当前目录下的所有子目录名列表
    # files表示当前目录下的所有文件名列表

    # TODO 在这里可以对当前目录下的文件和子目录进行处理

4.创建文件夹

if not os.path.exists('file_path/file_name'):
	os.mkdir('file_path/file_name') # 需要传入一个参数指定新建路径的位置和名称

5.返回路径最下级的目录

os.path.basename('file_path/file_name')
return file_name #传入完整路径,返回传入路径的最下级目录

6.返回最后一个分隔符前的所有路径

os.path.dirname('file_path/file_name')
return file_path # 与os.path.basename正好相反,os.path.dirname返回最后一个分隔符前面的所有的路径

7.以最后一个分隔符为界,将路径分为两部分

os.path.split('file_path/file_name')
return (file_path,file_name) # 返回一个元组,包含两部分内容,第一部分是os.path.dirname的内容,第二部分是os.path.basename的内容

8.将多个传入路径组合为一个路径

os.path.join(file_path,file_name) # 以第一个参数为父目录,之后的每一个参数为下一级目录(如果中间出现了存在“绝对路径”的字符,则以该字符为父目录)

9.获取文件的相对路径

  获取相对路径的函数os.path.relpath(path1,path2)。它返回从path2到path1的相对路径,其中path1和path2可以是文件或目录的路径。
  os.path.relpath(path1,start)函数还可以接受一个可选参数start,用于指定相对路径的起点。如果省略start参数,则默认使用当前工作目录作为起点。

path1 = '/home/user/myproject/file.txt'
path2 = '/home/user'
start = '/home'

rel_path = os.path.relpath(path1, path2)
print(rel_path)  # 输出:myproject/file.txt

rel_path_from_start = os.path.relpath(path1, start)
print(rel_path_from_start)  # 输出:user/myproject/file.txt

10.判断是文件还是目录

os.path.isdir(file) # 判断是否为目录
os.path.isfile(file) # 判断是否为文件
### Python `os` 常用函数列表 #### 获取当前工作目录 可以使用 `os.getcwd()` 函数来获取当前的工作路径[^2]。 ```python import os current_directory = os.getcwd() print(f"Current Working Directory: {current_directory}") ``` #### 列出指定目录的内容 通过 `os.listdir(path)` 可以返回给定路径下的所有文件和子目录名称组成的列表[^3]。 ```python directory_contents = os.listdir(".") for item in directory_contents: print(item) ``` #### 创建新目录 有两种方式创建新的目录结构: - 使用 `os.mkdir(directory_name)` 来创建单级的新目录,如果上级目录不存在则会抛错。 - 使用 `os.makedirs(directory_name)` 支持多层级创建,即使父级目录也不存在也会一并建立。 ```python try: os.mkdir("new_folder") # 单层创建 except FileExistsError as e: print(e) os.makedirs("parent/child/grandchild", exist_ok=True) # 多层次创建 ``` #### 删除现有目录 对于删除操作也有两种不同的方法: - `os.rmdir(directory_name)` 仅能移除非空的一级目录。 - `os.removedirs(directory_name)` 同样只适用于空目录但是可以从最底层开始逐级向上清理直到遇到非空为止。 ```python os.rmdir("empty_folder") # 需要确保目标为空才能成功执行 os.removedirs("a/b/c") # 自底向上去除一系列连续的空目录 ``` #### 文件处理 涉及具体的文件管理还括读取、写入以及重命名等功能。这里列举几个常用的例子: - **打开文件**: 直接利用内置的 `open()` 方法即可完成基本的文件IO任务;而为了更安全地操作建议配合上下文管理器(`with`)一起使用。 - **移动或改名文件**: 使用 `shutil.move(src, dst)` 或者 `os.rename(old_path, new_path)` 实现文件的位置变更或是名字更改[^4]。 ```python source_file = "example.txt" destination_file = "/path/to/new_location/example_renamed.txt" # 安全的方式打开文件进行读写 with open(source_file, 'r+') as f: content = f.read() # 更改文件位置及名称 os.rename(source_file, destination_file) ``` #### 路径解析 针对复杂的路径转换需求提供了丰富的辅助工具类如 `os.path` 子模块中的各种静态方法用于标准化不同平台间的差异性表达形式,并支持拆分组合等灵活的操作。 ```python from pathlib import Path relative_path = './data/sample.csv' absolute_path = os.path.abspath(relative_path) normalized_path = os.path.normpath(absolute_path) base_dir, filename = os.path.split(normalized_path) extension = ''.join(Path(filename).suffixes) print(f""" Relative Path: {relative_path} Absolute Path: {absolute_path} Normalized Path: {normalized_path} Base Directory: {base_dir} Filename: {filename} File Extension(s): {extension} """) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值