Python文件与目录操作完整指南:从基础读写到目录遍历

山海之间
山海之间
发布时间:2026-10-14| 5人浏览过
原创

本文系统汇总Python中文件与目录的核心操作方法。详细解析open()函数的各种模式(r/w/a等)及编码处理,涵盖write/read系列函数的使用规范。深入讲解os与os.path模块,包括工作目录获取、目录创建删除、多级目录处理及os.walk遍历技巧,附带完整代码示例,助您掌握Python文件系统编程。

Python文件与目录操作概述

前言

Python内置了文件(file)对象,通过调用内置方法即可实现文件操作。例如,使用open()方法可以创建文件对象,利用write()方法则能将内容写入文件。

Python文件基本操作详解

一、文件基本操作

1. 创建和打开文件

要操作文件,首先需创建或打开指定文件以获取文件对象,这可以通过内置函数open()来实现。


file = open(file_name[,mode[,buffering]])
'''
file_name : 要创建或者打开的文件名
mode : 用于指定文件打开的方式
'''

mode参数的参数值表

模式 描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

注意

使用open()函数打开文件时,默认采用GBK编码。若需使用其他编码方式,必须显式添加encoding参数。

file = open('./text.txt','a+',encoding='utf-8') #需要采用原文件用的编码方式打开,不然会报错

2. 关闭文件

文件打开后应及时关闭,以避免对文件造成不必要的损坏。可以使用内置函数close()来执行此操作。

file = open('./text.txt','a+') file.close()

注

close()函数会先刷新缓冲区中尚未写入的信息,将其写入文件后再关闭文件,从而起到保护文件的作用。

3. 写入文件

语法

file = write(string)

demo


#打开文件
file = open('./text.txt','a+')
#写入文件								
file = write('不负代码,不负卿')
#关闭文件
file.close()

注:

写入文件时需注意打开文件时的模式,否则可能会覆盖原有数据。

4. 读取文件

读取文件的前提是打开文件时指定的模式为r(只读)或r+(读写),否则将抛出异常。

(1)读取指定字符

file.read([size])

#size :用于指定要读取的字符个数,如果省略,则一次性读取所有内容。

(2)读取一行

file.readline()

该方法用于读取一行文本

(3)读取全部行

file.readlins()

Python目录操作与os模块应用

二、目录操作

Python内置了os模块及子模块os.path,用于对目录或文件进行操作。

os模块提供的与目录相关的函数

函数 说明
getcwd() 返回当前的工作目录
listdir(path) 返回指定路径下的文件和目录信息
mkdir(path[,mode]) 创建目录
makedirs(path/path2.....) 创建多级目录
rmdir(path) 删除目录
removedirs(/path1/path2...) 删除多级目录
chdir(path) 把path设置为当前工作目录
walk(top[,topdown[,onerror]) 遍历
access(path,accessmode) 获取指定文件是否有某个权限(accessmode的等于R_OK(读取),W_OK(写入),X_OK(执行),F_OK(存在)),如果有指定的权限,返回1,否则返回0.
chmod(path,mode) 修改path指定文件的访问权限
remove(path) 删除指定的文件路径
rename(src,dst) 将文件或目录src重命名为dst
stat(path) 返回path指定文件的信息

os.path模块提供与目录有关的函数

函数 说明
abspath(path) 用于获取文件或目录的绝对路径
exists(path) 用于判断目录或者文件是否存在,如果存在则返回True,否则返回False
join(path,name) 将目录与目录或者文件名拼接起来
splitext() 分离文件名和拓展名
split(path) 将路径和文件名分开
basename(path) 从一个目录中提取文件名
dirname(path) 从一个路径中提取文件路径,不包括文件名
isdir(path) 用于判断路径是否有效

demo —— 获取当前工作目录

import os print(os.getcwd())

demo —— 判断目录是否存在

import os print(os.path.exists("c:\\demo"))

注

因为exists()是os的子模块提供的,所以要要加前缀,os.path

demo —— 创建一级目录


import os
path = "c://demo"
#如果要创建的目录已经存在,则会抛出异常,先判断要创建的目录是否存在
if not os.path.exists(path):
	os.mkdir(path)
else:
	print('该目录已经存在')

注

mkdir(path)创建的目录是一级目录,如果传入的path中最后一级的上级目录不存在,那么会抛出异常。

demo —— 创建多级目录

import os os.makedirs("C:\\demo1\\demo2\\...")

demo —— 删除目录


import os
path = "C:\\demo1\\demo2"
#判断要删除的目录,如果不存在会抛出问题
if os.path.exists(path):
	os.rmdir("C:\\demo1\\demo2") #删除的是demo2这个文件
	print("目录删除成功!")
else:
	print("该目录不存")

注:

rmdir()函数只能删除空的目录,如果不为空就不能删除,可以一下代码删除不为空的目录。


import shutil
shutil.rmtree("C:\\demo\\text")

demo —— 遍历目录

os.walk()的返回值是一个包含三个元素(dirpath,dirnams,filenames)的元组生成器对象。

dirpath: 是一个字符串,表示当前遍历的路径

dirnames: 是一个列表,表示的是当前路径下包含的子目录

filenames: 也是一个列表,当前目录下的文件


os.walk(top,[topdown][,onerror][,followlinks])
'''
top: 用于指定要遍历的目录	
topdown: 可选参数,用于指定要遍历的顺序,如果为True(默认),表示从上到下遍历,如果为False,表示从小到上。
'''


import os
path = "C:\\demo"
#root 是当前根路径,dirs包含路径下的子目录,files包含了子目录下的二五年间
for root,dirs,fles in os.walk(path,topdown=True):
	for name in dirs:
		print(os.path.join(root,name))
	for name in files:
		print(os.path.join(root.name))

demo —— 产找当前目录下某个文件是否存在


import os
path = "C:\\demo"
filename = "love.txt"
for root,dirs,files in os.walk(path):
	for name in files:
		if filename== name:
			print(os.path.join(root,name))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

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

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 算法库。