Python文件处理


Posted in Python onFebruary 29, 2016

本文给大家介绍Python文件处理相关知识,具体内容如下所示:

1.文件的常见操作

文件是日常编程中常用的操作,通常用于存储数据或应用系统的参数。python提供了os、os.path、shutil等模块处理文件,其中包括最常用的打开文件,读写文件,赋值文件和删除文件等函数。

1.1文件的创建

python3.+中移除了python2中的全局file()函数,还保留了open()函数。文件的打开或创建可以使用函数open()。该函数可以指定处理模式,设置打开的文件为只读,只写,可读写状态。open()的声明如下:

open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)

参数说明:

•参数file是被打开的文件名称,如果文件file不存在,open()将创建名为name的文件,然后再打开该文件。

•参数mode是指文件的打开模式。文件的打开模式请参照以下内容。

•参数buffering是设置缓存模式。0表示不缓存,1表示缓存;如果大于1则表示缓冲区的大小,以字节为单位。

•参数encoding是设置文件的字符编码格式。

•open()函数会返回一个file对象,file 对象可以对文件进行各种操作 文件模式:

'r' open for reading (default)
'w' open for writing, truncating the file first
'x' create a new file and open it for writing

创建一个新的文件,打开并写入

'a' open for writing, appending to the end of the file if it exists

模式打开文件以追加

'b' binary mode二进制模式打开,可与其他模式一起使用
't' text mode (default)
'+' open a disk file for updating (reading and writing)
'U' universal newline mode (deprecated)支持所有的换行符号

注意:图片、视频等文件必须使用b的模式进行读写。

message = '''
hello world,\n
hello python,\n
good time.
'''
f = open('test.txt','w')
f.write(message)
f.close()

代码说明:

•定义一个字符串变量

•以只写模式创建一个文件并写入

•将字符串变量写入文件

•关闭文件

1.2 文件的读取

文件的读取有多种方法,可以使用readline()、readlines()、或read()函数读取文件。

1.按行读取方式readline()

readline()每次读取文件的一行,需要循环读取文件。但是当文件指针移动到文件的末尾是,依然使用readline()读取文件将出现错误。因此程序中需要添加一个判断语句,判断时间指针是否在文件的尾部,并且通过该语句中断循环。示例如下:

# 使用readline模式读取文件
f = open('test.txt','r')
while True:
line = f.readline()
if line:
print(line)
else:
break
f.close()
#如果line = f.readline(2)则表示每次循环只读取两字节的内容,直到行的末尾

2.多行读取方式readlines()

# 多行读取文件
f = open('test.txt')
lines = f.readlines()
for line in lines:
print(line)
f.close()

3.一次性读取方式read()

读取文件最简单的方式就是使用read(),read()将文件中一次性读出所有内容,并赋值给字符串变量,但是当文件比较大的时候不建议使用read()的方式去读取文件,因为一次读取比较大的内容会消耗大量的内存,影响系统的性能。示例如下:

# 一次读取文件
f = open('test.txt','r')
lines = f.read()
print(lines)
f.close()

文件指针:

with open('test.txt','rb') as src:
rd = src.read(100)
print(rd)
print(src.seek(src.tell()))
rd = src.read(100)
print(rd)
print(src.seek(src.tell()))
#每次读取100字节,然后返回指针的位置

4.with函数

通常我们使用open()打开一个文件并赋值给一个字符串变量来对文件进行操作,最后还需要进行手动关闭文件,这样写起来有点麻烦,下面我们可以使用with函数将文件打开与关闭写在一行函数上。

with open('test.txt','r') as src:
da = src.read()
print(da)
#只读模式打开文件并赋值给src,然后对文件进行操作即可,代码与使用open()来操作文件相同。

1.3文件的写入

文件的写入有多种方法,可以使用write(),也可以使用writelines()方法写入文件。write()可以将字符串写入文件,writelines()可以将列表写入文件。示例如下:

m1 = 'hello world'
l1 = ['good','time']
f = open('test1.txt','w')
f.write(m1)
f.writelines(l1)
f.close()

文件的追加:

m1 = 'hello python'
f = open('test1.txt','a+')
f.write(m1)
f.close()

1.4文件的删除

文件的删除需要使用os模块和os.path模块,os模块提供了系统的环境、文件、目录等操作系统的函数。 对于文件来说比较常用的os模块的函数如下:

•os.access(path,mode)#按照mode指定的权限进行访问
•os.chmod(path,mode)#改变文件的访问权限,mode用UNIX的权限符号表示
•os.open(filename,flag[,mode=0777])#按照mode指定的权限打开文件。默认情况下,给所有用户读、写、执行的权限
•os.remove(path)#删除path指定的文件
•os.rename(old,new)#重命名文件或目录,old表示原文件或目录,new表示新文件或目录
•os.stat(path)#返回path指定文件的所有属性
•os.fstat(path)#返回打开文件的所有属性
•os.startfile(filepath[,operation])#启动关联程序打开文件。例如,打开一个html文件,将启动IE浏览器
•os.tmpfile()#创建一个临时文件,文件创建在操作系统的临时目录中

注意:os模块的open()函数与内建的open()函数的用法不同。

os.path模块常用的函数如下:

•os.path.abspath(path)#返回path所在的绝对路径
•os.path.dirpath(path)#返回目录的路径
•os.path.exists(path)#判断文件是否存在
•os.path.getatime(filename)#返回文件的最后访问时间
•os.path.getctime(filename)#返回文件的创建时间
•os.path.getmtime(filename)#返回文件最后的修改时间
•os.path.getsize(filename)#返回文件的大小

os.path判断函数

•os.path.isabs(s)#测试路径是否是绝对路径
•os.path.isdir(path)#判断path指定的是否是目录
•os.path.isfile(path)#判断path指定的是否是文件
•os.path.split(p)#对路径进行分割,并以列表的方式返回
•os.path.splitext(p)#从路径中分割文件的扩展名
•os.path.splitdrive(p)#从路径中分割驱动器的名称
•os.walk(top,func,arg)#遍历目录树

示例如下:

import os
if os.path.exists('../test.txt'):
os.remove('test.txt')
print('is del')
else:
print('no')

1.5文件的复制

文件的复制有多种方法,下面我们来看一下第一种比较low的方式,就是读写的方式进行文件复制。示例如下:

#使用read()、write()实现文件复制
f1 = open('1.txt','r')
f2 = open('2.txt','w')
f2.write(f1.read())
f2.close()
f1.close()

第二种方法:

shutil模块,shutil模块是另外一个文件、目录的管理接口,提供了一些用于复制、目录的函数。copyfile()函数可以实现文件的复制,copyfile()函数的声明如下:
shuil.copyfile(src,dst)
•src表示源文件的路径,src是字符串类型
•dst表示目标文件的路径,dst是字符串类型
•src指向的文件复制到dst指向的文件

示例如下:

import shutil
shutil.move('1.txt','2.txt')

1.6文件的重命名

os模块的函数rename()可以对文件或目录进行重命名。

import os
os.rename('1.txt','11.txt')

使用shutil中的move()函数也可以实现文件重命名的目的。

import shutil
shutil.move('11.txt','1.txt')

修改文件的后缀名:

import os
files = os.listdir('.')
for filename in files:
li = os.path.splitext(filename)#返回后文件名和后缀名的列表
if li[1] == '.html':
newname = li[0] + '.htm'
os.rename(filename,newname)

glob模块用于对路径的匹配,返回符合给定条件的文件列表。glob模块的主要函数就是glob(),该函数返回符合同一匹配条件的多个文件。上面的呈现需要判断是否为html后缀,也可以使用glob()函数直接匹配文件名称。 匹配代码如下:

glob.glob('*.html')

glob还可以对路径做更对的匹配。例如,匹配C盘中以w开头的目录中所有的文本文件。

glob.glob('C:\\\w*\\*\\txt')

1.7文件的搜索和替换

文件内容的搜索和替换可以使用字符串的查找和替换来实现。例如,在htllo.txt文件中查找字符串'hello',并统计'hello'出现的次数。代码如下:

python, equal to anything!

以上内容给大家介绍了Python文件处理相关知识,希望对大家有所帮助!

Python 相关文章推荐
Python面向对象之接口、抽象类与多态详解
Aug 27 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
Sep 19 Python
【python】matplotlib动态显示详解
Apr 11 Python
Python/Django后端使用PIL Image生成头像缩略图
Apr 30 Python
Python实现Selenium自动化Page模式
Jul 14 Python
pygame实现俄罗斯方块游戏(基础篇1)
Oct 29 Python
Python之——生成动态路由轨迹图的实例
Nov 22 Python
python 解决cv2绘制中文乱码问题
Dec 23 Python
python基于event实现线程间通信控制
Jan 13 Python
Python和Anaconda和Pycharm安装教程图文详解
Feb 04 Python
Python基于smtplib协议实现发送邮件
Jun 03 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
Jun 06 Python
python 默认参数问题的陷阱
Feb 29 #Python
简要讲解Python编程中线程的创建与锁的使用
Feb 28 #Python
Python中time模块和datetime模块的用法示例
Feb 28 #Python
python 写的一个爬虫程序源码
Feb 28 #Python
Python基础语法(Python基础知识点)
Feb 28 #Python
python中map()与zip()操作方法
Feb 27 #Python
python中input()与raw_input()的区别分析
Feb 27 #Python
You might like
PHP Curl出现403错误的解决办法
2014/05/29 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
用htc组件制作windows选项卡
2007/01/13 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
jquery对单选框,多选框,文本框等常见操作小结
2014/01/08 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
jQuery控制元素显示、隐藏、切换、滑动的方法总结
2015/04/16 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
2016/05/15 Javascript
jQuery实现摸拟alert提示框
2016/05/22 Javascript
JQuery组件基于Bootstrap的DropDownList(完整版)
2016/07/05 Javascript
Web技术实现移动监测的介绍
2017/09/18 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
js+html获取系统当前时间
2017/11/10 Javascript
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
Angular网络请求的封装方法
2018/05/22 Javascript
jQuery选择器之基本选择器用法实例分析
2019/02/19 jQuery
vue使用混入定义全局变量、函数、筛选器的实例代码
2019/07/29 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
Python实现FTP上传文件或文件夹实例(递归)
2017/01/16 Python
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
django框架使用orm实现批量更新数据的方法
2019/06/21 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
python opencv 实现对图像边缘扩充
2020/01/19 Python
python数据预处理方式 :数据降维
2020/02/24 Python
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
大学毕业生自我鉴定
2013/11/05 职场文书
地道战观后感300字
2015/06/04 职场文书
六年级作文之预言作文
2019/10/25 职场文书
PHP使用QR Code生成二维码实例
2021/07/07 PHP
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript
MySQL普通表如何转换成分区表
2022/05/30 MySQL