首页 > 编程语言 >Python 文件路径与文件系统操作

Python 文件路径与文件系统操作

时间:2024-10-23 09:50:37浏览次数:3  
标签:文件 Python 路径 文件系统 file print path os 目录

处理文件的另一个重要方面是文件路径和文件系统操作。Python 提供了多个模块用于操作文件系统,其中最常用的是 os 模块和 pathlib 模块。掌握这些工具,能够让你在自动化任务中更轻松地管理文件和目录。

1 文件路径的基本操作

在操作文件时,路径是一个至关重要的概念。文件路径可以是绝对路径或相对路径:

  • 绝对路径:从根目录开始的完整路径。
  • 相对路径:相对于当前工作目录的路径。
1.1 os.path 模块

os.path 模块包含了一系列用于操作路径的方法。下面是一些常用的方法:

import os

# 获取当前文件的绝对路径
current_file_path = os.path.abspath('example.txt')
print("绝对路径:", current_file_path)

# 获取文件所在的目录
directory = os.path.dirname(current_file_path)
print("文件目录:", directory)

# 获取文件的基本名(不含目录部分)
basename = os.path.basename(current_file_path)
print("文件名:", basename)

# 分离文件名和扩展名
file_name, file_extension = os.path.splitext(current_file_path)
print("文件名:", file_name)
print("扩展名:", file_extension)

解释:

  • os.path.abspath():将相对路径转换为绝对路径。
  • os.path.dirname():返回路径中的目录部分。
  • os.path.basename():返回路径中的文件名部分。
  • os.path.splitext():将文件名和扩展名分开。
1.2 pathlib 模块

pathlib 模块提供了更现代、更面向对象的方式来操作路径。相比 os.pathpathlib 更加直观且易用。

from pathlib import Path

# 创建一个 Path 对象
file_path = Path('example.txt')

# 获取绝对路径
absolute_path = file_path.resolve()
print("绝对路径:", absolute_path)

# 获取文件所在的目录
directory = file_path.parent
print("文件目录:", directory)

# 获取文件的基本名和扩展名
print("文件名:", file_path.stem)
print("扩展名:", file_path.suffix)

说明:

  • Path 对象可以更自然地表示文件路径,提供的方法如 .stem.suffix.parent 能简化文件路径的操作。

2 操作文件和目录

Python 提供了丰富的文件和目录操作方法,涵盖创建、删除、重命名和遍历文件等功能。

2.1 创建文件和目录

要创建文件,可以直接使用文件操作模式,如 'w'。如果要创建目录,可以使用 os.makedirs()pathlib.Path.mkdir() 方法。

# 创建文件
with open('new_file.txt', 'w') as file:
    file.write("这是新创建的文件。")

# 创建目录(os模块)
os.makedirs('new_folder/sub_folder', exist_ok=True)
print("目录已创建")

# 创建目录(pathlib模块)
Path('new_folder/sub_folder').mkdir(parents=True, exist_ok=True)
print("目录已使用 pathlib 创建")

解释:

  • os.makedirs():递归创建目录。如果 exist_ok=True,当目录已存在时不会引发错误。
  • Path.mkdir():创建目录,与 os.makedirs() 类似。
2.2 删除文件和目录

要删除文件和目录,ospathlib 提供了不同的方法:

# 删除文件
os.remove('new_file.txt')
print("文件已删除")

# 删除空目录
os.rmdir('new_folder/sub_folder')
print("空目录已删除")

# 使用 pathlib 删除文件和目录
Path('new_folder/sub_folder').rmdir()
print("pathlib 删除目录")

注意:

  • os.remove()Path.unlink() 可以删除文件。
  • os.rmdir()Path.rmdir() 只能删除空目录。

如果要删除非空目录,可以使用 shutil.rmtree()

import shutil

# 删除非空目录
shutil.rmtree('new_folder')
print("非空目录已删除")

3 文件遍历

在许多情况下,你可能需要遍历某个目录下的所有文件或子目录,Python 提供了多种方式来遍历目录。

3.1 使用 os.listdir()

os.listdir() 函数可以列出指定目录下的所有文件和子目录:

# 列出目录中的文件和子目录
items = os.listdir('.')
print("当前目录中的项目:", items)
3.2 使用 os.walk()

os.walk() 函数用于递归遍历目录树。它会生成一个三元组 (dirpath, dirnames, filenames),分别表示当前目录路径、该目录下的子目录和文件名。

# 递归遍历目录树
for dirpath, dirnames, filenames in os.walk('.'):
    print("目录路径:", dirpath)
    print("子目录:", dirnames)
    print("文件:", filenames)

说明:

  • os.walk() 非常适合用于遍历复杂的目录结构,尤其是当需要递归处理所有文件时。
3.3 使用 pathlib 遍历

pathlib 提供了 .iterdir().glob().rglob() 方法来遍历目录,支持模式匹配。

# 使用 iterdir() 列出目录中的文件和子目录
path = Path('.')
for item in path.iterdir():
    print(item)

# 使用 glob() 列出所有 .txt 文件
for txt_file in path.glob('*.txt'):
    print(txt_file)

# 使用 rglob() 递归查找所有 .py 文件
for py_file in path.rglob('*.py'):
    print(py_file)

说明:

  • .glob() 支持使用通配符匹配文件,如 *.txt 匹配所有 .txt 文件。
  • .rglob() 递归遍历目录树,查找所有匹配的文件。

4 获取文件和目录信息

有时你需要获取文件的详细信息,比如文件大小、修改时间等。os 模块和 pathlib 模块都提供了相应的方法。

1 获取文件大小和修改时间
# 使用 os 获取文件大小和修改时间
file_size = os.path.getsize('example.txt')
file_mtime = os.path.getmtime('example.txt')

print(f"文件大小: {file_size} 字节")
print(f"文件最后修改时间: {file_mtime}")

# 使用 pathlib 获取文件大小和修改时间
file_path = Path('example.txt')
print(f"文件大小: {file_path.stat().st_size} 字节")
print(f"文件最后修改时间: {file_path.stat().st_mtime}")
2 检查文件类型和权限

可以通过 os.pathpathlib 来检查文件或目录的类型,以及是否具有某些权限。

# 检查是否是文件
is_file = os.path.isfile('example.txt')
print("是文件:", is_file)

# 检查是否是目录
is_dir = os.path.isdir('example_folder')
print("是目录:", is_dir)

# 使用 pathlib 检查类型
path = Path('example.txt')
print("是文件:", path.is_file())
print("是目录:", path.is_dir())

说明:

  • os.path.isfile()Path.is_file() 用于检查路径是否是文件。
  • os.path.isdir()Path.is_dir() 用于检查路径是否是目录。

5 文件权限管理

Python 可以操作文件和目录的权限,常用的函数有 os.chmod()pathlib.Path.chmod(),可以修改文件的读、写、执行权限。

import os

# 设置文件为只读
os.chmod('example.txt', 0o444)

# 使用 pathlib 设置文件为可读写
Path('example.txt').chmod(0o644)

说明:

  • 文件权限使用八进制表示法,如 0o644 表示文件拥有者可以读写,其他用户只能读取。

标签:文件,Python,路径,文件系统,file,print,path,os,目录
From: https://blog.csdn.net/imdeity/article/details/142453820

相关文章

  • Python 学习记录
    前言简单情况:主要记录学习Python的简单情况,包括代码与结果,以及关键注释工具与来源:一下代码与结果都可在JupyterLab上实现,更多情况可看Github使用NumPy可视化数学函数1.可视化f=x1*e(-x12-x22)importnumpyasnpimportmatplotlib.pyplotaspltx1_array=np.linspa......
  • 计算机毕业设计Python+大模型知识图谱中华古诗词可视化 古诗词智能问答系统 古诗词数
    温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!开发技术:前端:vue.jsechartsD3.js后端:Flask/Django机器学习/深度学习:LSTM情感分析模型、PyTorch、T......
  • 计算机毕业设计Python+Spark知识图谱课程推荐系统 课程用户画像系统 课程大数据 课程
    《Python+Spark知识图谱课程推荐系统》开题报告一、研究背景与意义随着互联网技术的快速发展,在线教育平台已成为人们获取知识、提升技能的重要途径。然而,面对海量的课程资源,用户往往难以快速找到符合自己兴趣和需求的课程。传统的课程推荐系统大多基于简单的规则或统计方法,难......
  • python中的字典排序--sorted()
    字典的排序:在学习python的时候,了解到相比于列表,字典是一个无序的数据结构,一般都不对其进行排序的。但是要想对字典进行排序,是可以通过sorted()函数进行操作的!关于字典的排序,下面从键key和值value进行代码的运行和分析:【先看代码和执行结果,后面会进行详细的解析】#先定义一......
  • windows下python虚拟环境强制重新安装pip并安装paramiko
    环境:OS:Windows11python:3.6.81.切换到虚拟环境目录:cdC:\Users\huangxueliang\PycharmProjects\cmdbtest\venv 2.执行如下命令Scripts\activate 3.强制重新安装python-mpipinstall-U--force-reinstallpip 4.查看版本(venv)C:\Users\huangxueliang\PycharmPro......
  • python 更新pip镜像源
    前言默认情况下pip使用的是国外的镜像,在下载的时候速度非常慢,下载速度是几kb或者几十kb,花费的时间比较长。解决办法国内目前有些机构或者公司整理了对应的镜像源,使得通过内网就能访问即可,下载速度达到几百kb或者几M,速度对比而言简直一个天上,一个地下。国内源:阿里云:http://m......
  • python 读写csv文件(创建,追加,覆盖)
    读取csv文件利用 csv.reader 可以读csv文件,然后返回一个可迭代的对象 csv_read,我们可以直接从 csv_read 中取数据importcsvdefread_csv():path="aa.csv"withopen(path,"w")asf:csv_read=csv.reader(f)forlineincsv_read:......
  • 使用Python抓取房源信息
    1.引言在当今大数据时代,网络爬虫成为获取信息的重要手段之一。本文将以某家二手房为例,演示如何使用Python爬虫抓取房源信息,并将这些信息保存到Excel文件中。目标网站2.准备工作2.1安装必要的库在开始之前,请确保你的环境中已经安装了以下Python库:requests:用于发送H......
  • Python与excel交互(xlwt库和openpyxl库的使用)
    xlw库介绍xlwt是用于在Python中操作Excel文件的第三方库,主要用于创建和写入Excel文件(xls格式)。使用xlwt可以方便地设置单元格的样式,像设置字体(如字体大小、颜色等)、对齐方式(水平和垂直对齐)和边框等。还能灵活控制工作表的行高和列宽,以满足不同数据展示的需求。在数据写入......
  • 使用OpenCV进行视频边缘检测:案例Python版江南style
    1.引言本文将演示如何使用OpenCV库对视频中的每一帧进行边缘检测,并将结果保存为新的视频文件。边缘检测是一种图像处理技术,它可以帮助我们识别出图像中不同区域之间的边界。在计算机视觉领域,这项技术有着广泛的应用,比如物体识别、运动分析等。2.环境准备为了运行本示例......