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中的内置函数getattr()介绍及示例
Jul 20 Python
python实现多线程暴力破解登陆路由器功能代码分享
Jan 04 Python
Python中encode()方法的使用简介
May 18 Python
Python编程之多态用法实例详解
May 19 Python
python切片及sys.argv[]用法详解
May 25 Python
python:接口间数据传递与调用方法
Dec 17 Python
详解10个可以快速用Python进行数据分析的小技巧
Jun 24 Python
Python 脚本拉取 Docker 镜像问题
Nov 10 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
Jan 19 Python
Python sep参数使用方法详解
Feb 12 Python
python argparse模块通过后台传递参数实例
Apr 20 Python
Python延迟绑定问题原理及解决方案
Aug 04 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生成SessionID和图片校验码的思路和实现代码
2009/03/10 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
jQuery 加上最后自己的验证
2009/11/04 Javascript
详解JavaScript中undefined与null的区别
2014/03/29 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
2014/06/20 Javascript
JavaScript定时显示广告代码分享
2015/03/02 Javascript
解决JS无法调用Controller问题的方法
2015/12/31 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
2016/01/07 Javascript
详解JavaScript中数组和字符串的lastIndexOf()方法使用
2016/03/13 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
2016/05/05 Javascript
js无提示关闭浏览器窗口的两种方法分析
2016/11/06 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
2016/12/22 Javascript
详谈js中window.location.search的用法和作用
2017/02/13 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
[01:00:30]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第二场 10.31
2020/11/02 DOTA
[01:33:25]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第一场 1月24日
2021/03/11 DOTA
Python+Opencv识别两张相似图片
2020/03/23 Python
python selenium xpath定位操作
2020/09/01 Python
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
室内设计专业自荐信
2014/05/31 职场文书
医生党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
政风行风整改方案
2014/10/25 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
2014年党员发展工作总结
2014/12/02 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
一年级语文下册复习计划
2015/01/17 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书
小学英语教师研修感悟
2015/11/18 职场文书
党性修养心得体会2016
2016/01/21 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers