第八章 Python文件操作 02-os.path模块

本文介绍了Python的os.path模块,包括判断路径存在性、文件或目录类型、获取绝对路径、文件名及扩展名、文件大小和时间戳等操作,并提供了示例代码。同时,展示了获取目录下所有文件、删除文件夹的函数实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

os.path模块

1. os.path模块的介绍

os.path其实是os模块的子模块,其实就是个子包。

在os模块中,我们可以对文件夹进行若干的操作,而os.path模块中包含的更多都是文件、文件夹属性获取的操作。

import os

2. 路径判断

# 1. 判断路径是否是真实存在的
print(os.path.exists('./test'))
print(os.path.exists('../test'))

# 2. 判断路径表达的是否为文件 [检验的后缀的情况]
print(os.path.isfile('./test/hello.txt'))
print(os.path.isfile('./test/hello'))

# 3. 判断路径表达的是否为文件夹
print(os.path.isdir('./test/hello.txt'))
print(os.path.isdir('./test'))  # True

# 4. 判断路径表达的是否为绝对路径
print(os.path.isabs('./test'))  # absolute  False
print(os.path.isabs(os.getcwd()))  # True

# 5. 获取相对路径对应的绝对路径
print(os.path.abspath('./test'))

# 6. 获取路径中的最后一级路径名
path = r'C:\Users\shawn\Documents\上课资料\语法基础\day18\代码\BaseProject\day18\test\hello.txt'
print(os.path.basename(path))

# 7. 获取路径中包含最后一个的文件夹路径
print(os.path.dirname(path))
# C:\Users\shawn\Documents\上课资料\语法基础\day18\代码\BaseProject\day18\test

# 8. 获取文件的后缀名 结果是一个二元组 如果是文件 第二个元素就是后缀名  文件夹的话就是空字符串【按照后缀切割  路径, 后缀名】
print(os.path.splitext(path))
# ('C:\\Users\\shawn\\Documents\\上课资料\\语法基础\\day18\\代码\\BaseProject\\day18\\test\\hello', '.txt')

print(os.path.splitext(r'C:\Users\shawn\Documents\上课资料\语法基础\day18\代码\BaseProject\day18\test'))
# ('C:\\Users\\shawn\\Documents\\上课资料\\语法基础\\day18\\代码\\BaseProject\\day18\\test', '')

# 9. 路径拼接
super_path = r'C:\\Users\\shawn\\Documents\\上课资料\\语法基础\\day18\\代码\\BaseProject\\day18\\test'
print(os.path.join(super_path, 'hello.txt'))
# C:\\Users\\shawn\\Documents\\上课资料\\语法基础\\day18\\代码\\BaseProject\\day18\\test\hello.txt

3. 文件属性获取

# 1. 获取文件的字节大小
print(os.path.getsize('./1.OS模块.py'))

# 2. 获取文件的创建时间
print(os.path.getctime('./1.OS模块.py'))
import datetime
print(datetime.datetime.fromtimestamp(1661916953.9453664))

# 3. 获取文件的修改时间
print(os.path.getmtime('./1.OS模块.py'))
print(datetime.datetime.fromtimestamp(1661917233.2336862))

# 4. 获取文件的访问时间
print(os.path.getatime('./1.OS模块.py'))
print(datetime.datetime.fromtimestamp(1661930617.1276166))

4. 练习

获取指定目录下的所有的文件

import os

def get_all_file(dir_path):
	file_names = os.listdir(dir_path)
	for fn in file_names:
		file_path = os.path.join(dir_path, fn)
		if os.path.isfile(file_path):
			print(file_path)
		elif os.path.isdir(file_path):
			get_all_file(file_path)

get_all_file('./test')


'''
./test
|- demo   		hello.txt
	 |- ./test/demo
	      |- 1.txt			dir
	    					 |- 2.txt
'''
import os


def print_all_files(path, level):
    """
    需求:获取一个路径下的所有的子文件
    :param path: 需要查询文件的路径
    :return:
    """
    prefix = "|" + "----|" * level
    print(prefix, end=os.path.basename(path))
    print()
    # 1. 获取到所有的子文件
    sub = os.listdir(path)
    # 2. 遍历每一个文件
    for f in sub:
        # 3. 拼接路径
        full_path = os.path.join(path, f)
        # 4. 判断
        if os.path.isfile(full_path):
            print(prefix, end=f)
            print()
        else:
            print_all_files(full_path, level + 1)


print_all_files("/Users/shawn/PycharmProjects/pythonProject", 0)

删除指定的文件夹

import os

def remove_path(dir_path):
	file_names = os.listdir(dir_path)
	for fn in file_names:
		file_path = os.path.join(dir_path, fn)
		if os.path.isfile(file_path):
			os.remove(file_path)
		elif os.path.isdir(file_path):
			remove_path(file_path)
	os.rmdir(dir_path)


remove_path('./test1')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值