python文件及目录操作代码汇总
前言
在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:demo1demo2"
#判断要删除的目录,如果不存在会抛出问题
if os.path.exists(path):
os.rmdir("C:demo1demo2") #删除的是demo2这个文件
print("目录删除成功!")
else:
print("该目录不存")
注:
rmdir()函数只能删除空的目录,如果不为空就不能删除,可以一下代码删除不为空的目录。
import shutil
shutil.rmtree("C:demotext")
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))
以上就是本文的全部内容,希望对大家的学习有所帮助。
- 洛谷P2415 集合求和
- React多页面应用5(webpack生产环境配置,包括压缩js代码,图片转码等)
- SDIBT 1046 Primary Arithmetic
- React多页面应用4(webpack自动化生成多入口页面)
- 第二周神经网络基础2.1 二分分类2.2 logistic回归2.3 logistic 回归损失函数2.4 梯度下降2.5 导数2.14 向量化logistic 回归的输出2.15 Python中的广
- 1031 SDIBT Where's Waldorf?
- poj 2469 Stack 'em Up
- React多页面应用3(webpack性能提升,包括打包性能、提取公共包等)
- POJ 2646 The Trip
- React多页面应用2(处理CSS及图片,引入postCSS,及图片处理等)
- 图的广度优先搜索和深度优先搜索(邻接链表表示)邻接链表广度优先搜索深度优先搜索运行结果
- JOJ 2680 Problem F: Coin Game
- React多页面应用1(webpack开发环境搭建,包括Babel、热更新等)
- JOJ 2676 Problem B
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Express新建项目与配置项目热加载
- selenium控制已打开的页面
- 盘点一下lua脚本和python的区别(基础)
- python识别视频黑屏或者低清晰度
- python在linux环境下安装skimage
- python3异步爬虫 ——aiohttp模板使用
- [PHP] 抽象工厂设计模式-创建型设计模式
- [javascript] 支付宝小程序网络GET请求
- [PHP] 生成器模式-创建型设计模式
- [PHP] 工厂方法设计模式-创建型设计模式
- [PHP] 对象池模式-创建型设计模式
- [PHP] 原型模式-创建型设计模式
- [PHP] 简单工厂模式-创建型设计模式
- [PHP] 单例模式-创建型设计模式
- [PHP] 静态工厂模式-创建型设计模式