Python 目录操作

本文介绍了Python中用于目录操作的os和os.path模块,包括获取当前目录、创建删除目录、路径处理、文件判断等核心方法。通过实例展示了如何使用这些方法进行路径的创建、检查、拼接和遍历,以及删除目录。此外,还提到了处理相对路径和绝对路径的方法。
摘要由CSDN通过智能技术生成

1.模块及功能

在Python中,实现目录操作的的模块是os和其子模块os.path。主要方法如下表

os模块主要方法
方法说明
getcwd()获取当前目录
listdir()返回指定路径下文件和目录
mkdir()创建目录
makedirs()创建多级目录
rmdir()删除目录
removedirs()删除多级目录
chdir()把某个路径设置为当前工作目录
walk()遍历目录,返回元组(路径,所有目录列表,文件列表)
os.path主要方法
方法说明
abspath()获取绝对路径
exists()判断目录或文件是否存在
join()拼接路径
splitext()分离文件名和扩展名
basename()从一个目录中提取文件名
dirname()从一个路径中提取文件路径(不包含文件名)
isdir()判断是否是有效路径

 2.使用

(1)路径的3种写法

# 不转义右斜线
route = r'D:\Python\test.py'
# \\表示\
route2 = 'D:\\Python\\test.py'
# 使用左斜线
route3 = 'D:/Python/test.py'

(2)工作路径、绝对路径和相对路径

①工作路径就是某个运行py文件的所在路径

import os
print('当前工作路径:', os.getcwd())


# 当前工作路径: D:\Python

②绝对路径就是不依赖工作路径,也可以简单理解为完整路径

print('日志文件的绝对路径:', os.path.abspath('log.txt'))


# 输出:日志文件的绝对路径: D:\Python\log.txt

③相对路径就是相对当前工作路径的路径

比如我们某个项目的代码都放在py文件夹,日志在log文件夹。那么要打开log文件夹里的log.txt就可以使用相对路径。

with open('../log/log.txt', 'a') as f:
    f.write('xxx')

 (3)拼接路径

①路径其实也是一个字符串,因此可以直接使用字符串的拼接

route = 'D:/python' + '/log/log.txt'

②使用字符串拼接必须注意合并后是一个完整路径,在实际使用中往往不是多一个斜线就是少一个斜线,因此,使用os提供的拼接功能可以避免这个问题。

route = os.path.join('D:/python', 'log/log.txt')

(4)判断目录是否存在,创建目录

①这两个操作往往一起使用,目录存在进行下一步,不存在则创建

log_dir = 'D:/python/log'
# 判断目录是否存在
if not os.path.exists(log_dir):
    # 创建目录
    os.mkdir(log_dir)

②创建多级目录(就是新建目录里再新建目录)

os.makedirs('测试/test')

(5)删除目录(被删除的目录必须为空

path = '测试/test'
if os.path.exists(path):
    os.rmdir(path)

如果想删除不为空的目录,要使用shutil模块

import shutil
import os
path = '测试/test'
if os.path.exists(path):
    # 删除非空目录
    shutil.rmtree(path)

(6)遍历目录

①os.walk

递归的方式返回每一个目录的(根目录,文件夹列表,文件列表),walk方法不适用macos

import os
route = 'D:/python'
for r in os.walk(route):
    print(r)


# 输出:('D:\\python', ['data', 'log', 'py'], [])
#       ('D:\\python\\data', [], ['01.xlsx', '02.xlsx'])
#       ('D:\\python\\log', [], ['log.txt'])
#       ('D:\\python\\py', [], ['test.py'])

实际我们使用时,会对元组进行拆包,比如要获取指定目录下全部文件

route = 'D:/python'
for root, dirs, files in os.walk(route):
    for file in files:
        print(file)


# 输出:01.xlsx
#       02.xlsx
#       log.txt
#       test.py

②os.listdir,返回指定路径下所有文件夹

route = 'D:/python'
print(os.listdir(route))


# 输出:['data', 'log', 'py']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值