python文件及目录操作代码汇总


Posted in Python onJuly 08, 2020

前言

在python中,内置了文件(file)对象,通过一些内置的方法就可以实现对文件的操作,例如open()方法创建一个文件对象,write()方法向文件写入内容。

一.文件基本操作

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模块及子模块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 相关文章推荐
wxpython 学习笔记 第一天
Mar 16 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
May 11 Python
Django中ORM表的创建和增删改查方法示例
Nov 15 Python
使用Flask集成bootstrap的方法
Jul 24 Python
python调用百度语音识别实现大音频文件语音识别功能
Aug 30 Python
Python使用logging模块实现打印log到指定文件的方法
Sep 05 Python
Python如何实现强制数据类型转换
Nov 22 Python
kafka监控获取指定topic的消息总量示例
Dec 23 Python
python读取ini配置文件过程示范
Dec 23 Python
pycharm全局搜索的具体步骤
Jul 28 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
Sep 02 Python
解决PDF 转图片时丢文字的一种可能方式
Mar 04 Python
Python预测2020高考分数和录取情况
Jul 08 #Python
Python venv虚拟环境配置过程解析
Jul 08 #Python
Python如何实现自带HTTP文件传输服务
Jul 08 #Python
Python第三方包PrettyTable安装及用法解析
Jul 08 #Python
简单了解如何封装自己的Python包
Jul 08 #Python
python如何实现读取并显示图片(不需要图形界面)
Jul 08 #Python
基于python实现可视化生成二维码工具
Jul 08 #Python
You might like
php 获取当前访问的url文件名的方法小结
2010/02/08 PHP
PHPThumb图片处理实例
2014/05/03 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
2015/10/08 PHP
PHP创建/删除/复制文件夹、文件
2016/05/03 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
2016/10/21 PHP
php快速导入大量数据的实例方法
2019/09/23 PHP
写入cookie的JavaScript代码库 cookieLibrary.js
2009/10/24 Javascript
JS左右无缝滚动(一般方法+面向对象方法)
2012/08/17 Javascript
JavaScript中奇葩的假值示例应用
2014/03/11 Javascript
Angularjs 实现一个幻灯片示例代码
2016/09/08 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
浅谈node的事件机制
2017/10/09 Javascript
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
vue中v-model的应用及使用详解
2018/06/27 Javascript
JS数组实现分类统计实例代码
2018/09/30 Javascript
vue-lazyload使用总结(推荐)
2018/11/01 Javascript
微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能
2019/07/20 Javascript
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
在Python下尝试多线程编程
2015/04/28 Python
Python生成随机数组的方法小结
2017/04/15 Python
Python 查看list中是否含有某元素的方法
2018/06/27 Python
python for循环输入一个矩阵的实例
2018/11/14 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
python使用PyQt5的简单方法
2019/02/27 Python
Python中format()格式输出全解
2019/04/12 Python
Python的matplotlib绘图如何修改背景颜色的实现
2019/07/16 Python
PyTorch中permute的用法详解
2019/12/30 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
新西兰杂志订阅:isubscribe
2019/08/26 全球购物
离婚协议书怎么写2014
2014/09/30 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
小学体育组工作总结
2015/08/13 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
python 标准库原理与用法详解之os.path篇
2021/10/24 Python
maven依赖的version声明控制方式
2022/01/18 Java/Android
【海涛教你打DOTA】死灵飞龙第一视角解说
2022/04/01 DOTA