Python文件与目录操作实战指南:从基础到高级处理

拾柒
拾柒
发布时间:2026-10-13| 1人浏览过
原创

本文系统总结Python中文件与目录的常用操作,涵盖路径判断、目录创建删除、递归与os.walk遍历、文件后缀提取及路径拼接。重点解析文件打开模式、with语句的安全用法,以及通过临时文件策略安全修改文件内容的实战技巧,帮助开发者高效处理日常IO任务。

前言

文件和目录操作是日常开发中的高频需求。本文对此进行简要梳理,涵盖关键注意事项及对应的实现代码,旨在满足基本日常开发场景的需要。

目录操作基础

目录操作

判断目录或是文件是否存在


os.path.exists(path)

判断是否是文件或是目录


# 如果文件或是目录不存在也会返回False
os.path.isfile(path)
os.path.isdir(path)

创建/删除目录


os.mkdir(path)
os.rmdir(path)

得到当前的目录名称


os.path.split(dir_path)[1]

该方法既简单又实用。例如,当我们输入一个具体的目录路径时:


os.path.split('/usr/projects/project1')[1]
# 输出
project1

# 实际上,上面的代码是分了2步走:
# 第1步:利用os.path.split方法分割路径
os.path.split('/usr/projects/project1')
# 输出
('/usr/projects', 'project1')
# 然后第2步取出第2个结果,也就是当前的目录名字

目录遍历方法

循环遍历目录

遍历目录主要有两种实现方式。第一种是常规的递归方法,代码结构如下:


def list_file(path):
 for file in os.listdir(path):
  if os.path.isdir(os.path.join(path, file)):
   list_file(os.path.join(path, file))
  print(file)

另一种更为推荐的方式是使用os.walk方法,示例如下:


def list_file_by_walk(dir_path):
 for home, dirs, files in os.walk(dir_path):
  print(home)
  print(dirs)
  # files中是文件列表
  for file_name in files:
   print(file_name)

对os.walk方法的几个关键参数进行简要说明:

  • home:代表当前正在遍历的目录路径,例如 /usr/projects/。
  • dirs:表示该目录(home)下包含的所有子文件夹(即子目录)。
  • files:表示该目录(home)下包含的所有文件列表。

由此可见,os.walk方法会逐层遍历初始目录下的所有子目录及文件。

文件路径与后缀处理

常见的文件操作

与获取目录名类似的操作是获取文件的后缀名。


os.path.splitext(file_path)

当输入参数为文件完整路径时,例如:


a = '/usr/projects/project1/test.txt'
os.path.splitext(a)
# 输出
('/usr/projects/project1/test', '.txt')
# 所以跟上面类似,我们可以直接拿到文件的后缀
os.path.splitext(a)[1]

文件的全路径


# 需要文件的目录路径和文件名
os.path.join(dir_name, file_name)

此方法非常实用,因为在打开文件前,我们通常需要明确文件的具体路径。

例如,在上述遍历目录的代码示例中,我们可以通过以下方式打开并编辑文件:


def list_file_by_walk(dir_path):
  for home, dirs, files in os.walk(dir_path):
    print(home)
    print(dirs)
    # files中是文件列表
    for file_name in files:
      # 这个file_name只是一个文件名
      print(file_name)
      # 如果我们需要打开文件进行编辑读写操作,那就需要文件的路径
      # 用os.path.join方法就可以快速得到文件路径
      file_path = os.path.join(home, file_name)

需要注意的是,应避免直接使用字符串相加的方式拼接路径,因为这可能导致兼容性问题,例如在Windows系统上可能产生错误的路径格式。

文件读写与安全模式

读写文件

打开文件


with open(file, 'r') as f:
  for line in f.readlines():
    print line

只需记住上述打开文件的标准格式,即以下代码:


with open(file_path, 打开的模式) as f
# 我们就拿到了文件对象f,可以对文件进行操作了,比如读写等

这是因为文件读写属于IO操作,必须及时关闭已打开的文件。使用with open() as f的方式可以自动确保文件被关闭,避免手动关闭时可能出现的遗漏。

文件的打开模式

文件支持多种打开模式,包括只读、只写、追加等,具体模式可参考下图:

文件读写模式--来源于网络

虽然模式众多,但掌握常见几种即可,其余模式可在实际使用时再行查阅。需注意以下几点:

创建新文件,只需执行打开文件的操作即可:


# 只要这样一句就创建了一个新文件,也就是打开以后关闭文件
with open(new_file, 'w') as f:

特别需要注意的是,以'w'(只写)模式打开文件会清空原文件的所有内容!因此,如果在遍历文件时希望同时修改文件内容,不能简单地使用'w'模式打开。

那么,在遍历文件时如何同时修改文件呢?这里特指对文件内容的修改,例如修改特定行。

文件内容的安全修改策略

修改文件的某一部分

以下举例说明在遍历文件时如何修改文件,参考上述遍历目录文件的例子:


def list_file_by_walk(dir_path):
  for home, dirs, files in os.walk(dir_path):
    print(home)
    print(dirs)
    # files中是文件列表
    for file_name in files:
      # 这个file_name只是一个文件名
      print(file_name)
      # 如果我们需要打开文件进行编辑读写操作,那就需要文件的路径
      # 用os.path.join方法就可以快速得到文件路径
      file_path = os.path.join(home, file_name)
      
      # 这个时候我想修改这个文件的内容,要怎么做呢?

需要注意的是,直接读写模式需要手动管理文件指针,操作较为繁琐;而写读模式会清除原有内容,因此这两种方式均不适合直接修改文件。

一种解决思路是:先以只读模式打开文件,遍历内容并将其保存,例如:


with open(file, 'r') as f:
  for line in f.readlines():
    print line
    # 这里就可以把文件的内容一行行保存起来
    # 找到需要修改的行,修改以后保存

保存内容后,再以只读模式打开文件进行写入操作。

另一种思路是:在打开原文件的同时,再打开一个临时文件用于写入,代码如下:


with open(file, 'r') as f, open(cache_file_path, 'w') as w:
  for line in f.readlines():
    # 中间可以对f文件中的内容进行过滤或是修改
    w.write(line)

# 完了以后需要删除原文件,然后把临时文件的名字修改成原来文件的名字即可

此处顺带引出删除和重命名文件的方法。


os.remove(file)
os.rename(cache_file_path, file)

总结

以上总结了Python文件和目录操作的常用知识点与方法,建议收藏以便日后随时查阅。

以上就是本文的全部内容,希望这些内容能对您的学习或工作提供参考价值。感谢大家对本站的支持。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。