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二叉树遍历的实现方法
Nov 21 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
Apr 11 Python
Python提取网页中超链接的方法
Sep 18 Python
python 请求服务器的实现代码(http请求和https请求)
May 25 Python
Python利用递归实现文件的复制方法
Oct 27 Python
利用Pycharm断点调试Python程序的方法
Nov 29 Python
Empty test suite.(PyCharm程序运行错误的解决方法)
Nov 30 Python
python实现弹跳小球
May 13 Python
Python的matplotlib绘图如何修改背景颜色的实现
Jul 16 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
Aug 04 Python
python 基于wx实现音乐播放
Nov 24 Python
python help函数实例用法
Dec 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 pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
php通过ajax实现双击table修改内容
2014/04/28 PHP
PHP判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
javascript中怎么做对象的类型判断
2013/11/11 Javascript
21个值得收藏的Javascript技巧
2014/02/04 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
JavaScript实现生成GUID(全局统一标识符)
2014/09/05 Javascript
jQuery中children()方法用法实例
2015/01/07 Javascript
JavaScript清空数组元素的两种方法简单比较
2015/07/10 Javascript
跟我学习javascript的Date对象
2015/11/19 Javascript
基于js 各种排序方法和sort方法的区别(详解)
2018/01/03 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
vue实现菜单切换功能
2019/05/08 Javascript
小程序scroll-view安卓机隐藏横向滚动条的实现详解
2019/05/16 Javascript
微信小程序-API接口安全详解
2019/07/16 Javascript
解决Vue watch里调用方法的坑
2020/11/07 Javascript
Vue开发中常见的套路和技巧总结
2020/11/24 Vue.js
从局部变量和全局变量开始全面解析Python中变量的作用域
2016/06/16 Python
详解Python中表达式i += x与i = i + x是否等价
2017/02/08 Python
python中安装模块包版本冲突问题的解决
2017/05/02 Python
python对日志进行处理的实例代码
2018/10/06 Python
详解Python文件修改的两种方式
2019/08/22 Python
通过实例解析python描述符原理作用
2020/01/22 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
Python连接mysql方法及常用参数
2020/09/01 Python
Python三维绘图之Matplotlib库的使用方法
2020/09/20 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
供货协议书
2014/04/22 职场文书
关于战胜挫折的名言警句大全!
2019/07/05 职场文书
85句关于理想的名言警句大全
2019/08/22 职场文书
导游词之南昌滕王阁
2019/11/29 职场文书
微软Win11什么功能最惊艳? Windows11新功能特性汇总
2021/11/21 数码科技
Python写情书? 10行代码展示如何把情书写在她的照片里
2022/04/21 Python
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python