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素数检测实例分析
Jun 15 Python
Python实现线程池代码分享
Jun 21 Python
django model去掉unique_together报错的解决方案
Oct 18 Python
win与linux系统中python requests 安装
Dec 04 Python
Python排序搜索基本算法之选择排序实例分析
Dec 09 Python
Windows系统下PhantomJS的安装和基本用法
Oct 21 Python
python利用requests库模拟post请求时json的使用教程
Dec 07 Python
使用django和vue进行数据交互的方法步骤
Nov 11 Python
python 画函数曲线示例
Dec 04 Python
Python实现疫情通定时自动填写功能(附代码)
May 27 Python
Python logging模块handlers用法详解
Aug 14 Python
详解Python yaml模块
Sep 23 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&java(二)
2006/10/09 PHP
PHP中使用循环实现的金字塔图形
2014/11/08 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
js生成的验证码的实现与技术分析
2014/09/17 Javascript
JavaScript中数组添加值和访问值常见问题
2016/02/06 Javascript
Atitit.js的键盘按键事件捆绑and事件调度
2016/04/01 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
JavaScript适配器模式详解
2017/10/19 Javascript
vuex state及mapState的基础用法详解
2018/04/19 Javascript
vue实现动态列表点击各行换色的方法
2018/09/13 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
2020/02/06 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
python实现挑选出来100以内的质数
2015/03/24 Python
python清除函数占用的内存方法
2018/06/25 Python
python中csv文件的若干读写方法小结
2018/07/04 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
Python 中由 yield 实现异步操作
2020/05/04 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
Nili Lotan官网:Nili Lotan同名品牌
2018/01/07 全球购物
Skip Hop官网:好莱坞宝宝挚爱品牌
2018/06/17 全球购物
如何获取某个日期是当月的最后一天
2013/12/05 面试题
酒吧员工的岗位职责
2013/11/26 职场文书
初一家长会邀请函
2014/01/31 职场文书
购房意向书
2014/04/01 职场文书
幼儿园中班开学寄语
2014/04/03 职场文书
贷款担保书范文
2014/05/13 职场文书
精神文明建设标语
2014/06/16 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
风雨哈佛路观后感
2015/06/03 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
Python机器学习之底层实现KNN
2021/06/20 Python
SONY600GR,国产收音机厂商永远的痛
2022/04/05 无线电