python怎么处理文档_7.python文件的处理方式
一.文件操作方式
1.打开操作
open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)
打开一个文件,返回一个文件对象(流对象)和文件描述符。打开文件失败,则返回异常
2.文件处理基本流程:
<1>打开test文件,得到文件句柄并赋值给一个变量
<2>通过句柄对文件进行操作
<3>关闭文件
f = open("test") #file对象 #open函数会检索当前系统的编码,如果在win需要转成encoding='utf-8'#windows<_io.textiowrapper name="test" mode="r" encoding="cp936">#linux<_io.textiowrapper name="test" mode="r" encoding="UTF-8">
print(f.read()) #读取文件
f.close() #关闭文件####打开操作详解:
test文件内容在硬盘上,需要把文件加载到内存当中看。
第一步:open('test')在操作系统要了一个渔网,文件假如在硬盘上的一堆鱼,要想要鱼,就拿着渔网f到硬盘上去舀鱼,舀鱼相当于看内容
第二步:通过渔网f到硬盘上去捞鱼read(),整个过程通过操作系统提供的渔网去完成,这个渔网就是文件句柄f,f是open()函数提供的,open()函数是一个应用程序,函数都要完成一个特定的目的,这里完成特定的目的就是打开文件,open()它自己打不开,就得需要跟操作系统要,这个open()实际是在调操作系统,由操作系统最终给你返回一个f,有了这个f,就可以操作硬盘上的内容第三步:f.close()把渔网回收还给操作系统
关闭
1.close:flush并关闭文件对象。
2.文件已经关闭,再次关闭没有任何效果
读取
1.read(size=-1)
size表示读取的多少个字符或字节;负数或者None表示读取的EOF
2.行读取
①readline(size=-1):一行行读取文件的内容。size设置一次能读取行内几个字符或字节(节省内存)
举例1:
<1>xixi.txt文档:
111111111111111111111111111
222222222222222222222222222
<2>代码:
f=open('xixi.txt','r',encoding='utf-8')print('第1行',f.readline(),end='') #end=''去掉空行
print('第2行',f.readline())
f.close()#输出:
第1行 1111111111111111111111111111第2行2222222222222222222222222222
举例2:用for方式(内部调用readline)读取文件(linux)
<1>xixi.txt文档:
111111111111111111111111111
222222222222222222222222222
<2>代码:
#!/bin/env python
from __future__ import print_function #解决python2.7使用end = ''报错#_*_coding:utf-8_*_
f = open('xixi.txt','r')for i inf:print(i,end = '')#输出:
111111111111111111111111111
222222222222222222222222222
②readlines(hint=-1):读取所有行的列表。指定hint则返回指定的行数
<1>xixi.txt文档:
111111111111111111111111111
222222222222222222222222222
<2>代码:
f=open('xixi.txt','r',encoding='utf-8')
data=f.readlines()print(data)
f.close()##输出:
['1111111111111111111111111111\n', '2222222222222222222222222222\n']
写
1.write(s):把字符串s写入到文件中并返回字符的个数
举例:写文件
f=open('xixi.txt','w',encoding='utf-8')
f.write('11111111\n')
f.write('222222222\n')
f.write('333\n4444\n555\n')
f.close()##xixi.txt写入的文件结果:
11111111
222222222
333
4444
555
二.参数
1.file:打开或者要创建的文件名。如果不指定路径,默认是当前路径
2.模式mode:
文件操作中,最常用的操作就是读和写
文件访问的模式有两种:文件模式和二进制模式。不同模式下,操作函数不尽相同,表现的结果也不一样
(1)r:缺省的,表示只读打开
只读打开文件,如果使用write方法,会抛异常
如果文件不存在,抛出FileNotFoundError异常
(2)w:只写打开
表示只写方式打开,如果读取则抛出异常
如果文件不存在,则直接创建文件
如果文件存在,则清空文件内容
(3)x:只写创建并写入一个新文件
文件不存在,创建文件,并只写方式打开
文件存在,抛出FileExistsError异常
(4)a:只写入打开,如果文件存在,则追加
文件存在,只写打开,追加内容
文件不存在,则创建后,只写打开,追加内容
举例:7777这几个字追加到xixi.txt文档的最后一行
<1>原文件xixi.txt:
111111111111111111111111111
222222222222222222222222222
<2>代码:
f=open('xixi.txt','a',encoding='utf-8')
f.write('7777')
f.close()#追加xixi.txt文档后:
111111111111111111111111111
222222222222222222222222222
7777
(5)b:二进制模式
字节流,将文件就按照字节理解,与字符编码无关。二进制模式操作时,字节操作使用bytes类型
(6)t:缺省的,文件模式
字符流,将文件的字节按照某种字符编码理解,按照字符操作.open的默认mode就是rt
(7)+:读写打开一个文件。给原来只读,只写方式打开提供缺失的读或者写能力
为r,w,a,x提供缺失的读写功能,但是,获取文件对象依旧按照r,w,a,x,自己的特征
+不能单独使用,可以认为它是为前面的模式字符做增强功能的
举例:把原文件里的wangxixi删除掉
<1>xixi.txt原文件:
王西西
wangxixi
<2>代码:
src_f=open('xixi.txt','r',encoding='utf-8') #读的方式打开xixi.txt原文件
data=src_f.readlines() #把读取的结果存在data里
src_f.close() #关闭原文件
dst_f=open('xixi.txt','w',encoding='utf-8') #写的方式打开xixi.txt原文件
dst_f.write(data[0]) #把读取的data里的内容的里的王西西写进去
dst_f.close()##xixi.txt文件修改后:
王西西
3.其它参数
(1)encoding编码,仅文本模式使用
None表示使用缺省编码,以来操作系统
(2)errors:什么样的编码错误将被捕获
None和strict表示有编码错误将抛出ValueError异常,ignore表示忽略
(3)newline:文本模式中,换行的转换。可以为None,",'\r','\n','\r\n'
①读时,None表示'\r','\n','\r\n'都会被转换为'\n';"表示不会自动转换通用换行符;其它合法字符表示换行符就是指定字符,就会按照指定字符分行
②写时,None表示'\n'都会被替换为系统却省行分隔符os.linesep;'\n'或"表示'\n'不替换;其它合法字符表示'\n'会被替换为指定的字符
举例:
<1>原文:xixi.txt
西西
xixiaaa
<2>代码:
f=open('xixi.txt','r',encoding='utf-8',newline='')print(f.readlines())##打印:
['西西\r\n', 'xixiaaa']
(4)closefd:关闭文件描述符,True表示关闭它,False会在文件关闭后保持这个描述符。
fileobj.fileno()查看
5.常用修改文件操作
举例1:把xixi.txt文件里的所有字母b改成0
<1>文件xixi.txt
abcdefg
gfedcba
cba
<2>代码:
#!/bin/env python#_*_coding:utf-8_*_
with open('xixi.txt','r') as fr,open('xixi.txt.bak','w') as fw:for i infr:if 'b' ini:
i= i.replace('b','0')
fw.write(i)
<3>改变后的xixi.txt.bak
a0cdefg
gfedc0a
c0a
举例2:把xixi.txt文件里的所有字母b和字母e都改成0
<1>修改前文件xixi.txt
abcdefg
gfedcba
cba
<2>代码:
#!/bin/env python#_*_coding:utf-8_*_
with open('xixi.txt','r') as fr,open('xixi.txt.bak','w') as fw:for i infr:if 'b' ini:
i= i.replace('b','0')if 'e' ini:
i= i.replace('e','0')
fw.write(i)
<3>修改后xixi.txt.bak
a0cd0fg
gf0dc0a
c0a
三.文件指针
1.文件指针,指向当前字节位置
mode=r,指针起始在0
mode=a,指针起始在EOF
2.文件指针方法:
①tell()显示指针当前位置
②seek(offset[,whence])移动文件指针位置。offest偏移多少字节,whence从哪里开始
(1)文本模式下
whence 0 缺省值,表示从头开始,offest只能正整数
whence 1 表示从当前位置,offest只接受0
whence 2 表示从EOF开始,offest只接受0
举例:
<1>test文件内容:
西abcxi
<2>文本模式代码
f = open('test','r+',encoding='utf-8')print(f.tell()) #光标起始位置:0
print(f.read()) #读取文件所有内容:西abcxi
print(f.tell()) #再次查看光标结束位置:8
f.seek(0)#把光标设定在起始位置
print(f.read()) #读取文件所有内容:西abcxi
f.seek(3,0) #把光标移动到位置3
print(f.read()) #读取内容:abcxi
f.seek(0,2) #把光标移到结尾
print(f.tell()) #光标位置:8
f.close()
(2)二进制模式下
①whence 0 缺省值,表示从头开始,offest只能正整数
②whence 1 表示从当前位置,offest可正可负
③whence 2 表示从EOF开始,offest可正可负
举例1:rb模式
<1>test文件内容:
西abcxi
<2>二进制模式代码
f=open('test','rb')print(f.tell()) #起始光标位置:0
print(f.read()) #读取所有内容:b'\xe8\xa5\xbfabcxi'
print(f.tell()) #当前光标位置:8
f.seek(0)#把光标设定在起始位置
f.seek(2,1) #从当前指针开始,向后2
print(f.read()) #读取当前内容:b'\xbfabcxi'
print(f.tell()) #当前光标位置:8
f.seek(-2,1) #从当前指针开始,向前2
print(f.read()) #读取当前内容:b'xi'
f.seek(2,2) #从结尾开始,向后2
print(f.tell()) #当前光标位置:10
f.seek(-2,2) #从结尾开始,向前2
print(f.tell()) #当前光标位置:6
print(f.read()) #读取当前内容:b'xi'
f.close()
总结:二进制模式支持任意起点的偏移,从头,从尾,从中间位置开始。向后seek可以超界,但是向前seek的时候,不能超界,否则抛异常
举例2:wb模式
f=open('xixi.txt','wb') #b的方式不能指定编码
f.write(bytes('1111\n',encoding='utf-8'))
f.write('西西'.encode('utf-8'))###xixi.txt写入结果:
1111西西
举例3:ab模式
f=open('xixi.txt','ab') #b的方式不能指定编码
f.write('你好'.encode('utf-8'))###写入结果:
1111西西你好
四.判断
1.seekable()判断是否可seek
2.readable()判断是否可读
举例:判断xixi.txt这个文件是否可读
f=open('xixi.txt','r',encoding='utf-8')print(f.readable())
f.close()#输出:
True
3.writable()判断是否可写
4.closed判断是否已经关闭
五.上下文管理
一种特殊的语法,交给解释器去释放文件对象
with open('test') as f:print(f.read()) #文件只读,写入失败
print(f.closed) #查看是否关闭:False
上下文管理总结:
使用with ...as 关键字
上下文管理的语句块并不会开启新的作用域
with语句块执行完的时候,会自动关闭文件对象
举例:文件句柄open用as f赋值直接对文件进行操作
with open('xixi.txt','w') as f:
f.write('1111\n')#写入文件内容:
1111
六.StringIO和BytesIO
StringIO
(1)io模块中的类
from io import StringIO
(2)内存中,开辟的一个文本模式的buffer,可以想文件对象一样操作它
(3)当close方法被调用的时候,这个buffer会被释放
StringIO操作:
(1)getvalue()获取全部内容。跟文件指针没有关系
from io importStringIO#内存中构建
sio = StringIO() #像文件对象一样操作
print(sio.readable(),sio.writable(),sio.seekable())
sio.write('xi\npython') #写入xi,\n,python
sio.seek(0) #指针到第一位
print(sio.readline()) #读一行
print(sio.getvalue()) #无视指针,输出全部内容
sio.close()##输出结果:
True True True
xi
xi
python
(2)好处:一般来说,磁盘的操作比内存的造作要慢得多,内存足够的情况下,一般的优化思路是少落地,减少磁盘IO的过程,可以大大提高程序的运行效率
BytesIO
(1)from io import BytesIO
(2)内存中,开辟的一个二进制模式的buffer,可以像文件对象一样操作它
(3)当close方法被调用的时候,这个buffer会被释放
BytesIO操作:
from io importBytesIO#内存中构建
bio = BytesIO() #像文件对象一样操作
print(bio.readable(),bio.writable(),bio.seekable())
bio.write(b'xi\npython') #写入b'xi,\n,python
bio.seek(0) #指针到第一位
print(bio.readline()) #读一行
print(bio.getvalue()) #无视指针,输出全部内容
bio.close()##输出结果:
True True True
b'xi\n'b'xi\npython'
七.file-like对象
1.类文件对象,可以像文件对象一样操作
2.socket对象,输入输出对象(stdin,stdout)都是类文件对象
from sys importstdout
f=stdoutprint(type(f))#用的什么东西:
f.write('xi') #控制台打印:xi
python怎么处理文档_7.python文件的处理方式相关推荐
- python在word文档里插入文件对象
工作需要制作每周一次的汇总报表,除了正文以外,还需要把上周的各种报表以附件的方式打包到报表里,有word文档,有excel表格,手工操作是这样的:插入-对象-由文件创建-勾选显示为图标-选择文件-确认 ...
- python解析word_word文档的python解析
主要两块,第一个是文件类型的转换,第二个是用docx包去对word文档中的table进行parse 1. 文件格式装换 因为很多各种各样的原因,至今还有一些word文档是doc的格式存的,对于这种,如 ...
- python书籍pdf文档密码-Python玩转PDF的各种骚操作
Portable Document Format(可移植文档格式),或者PDF是一种文件格式,可以用于跨操作系统的呈现和文档交换.尽管PDF最初是由Adobe发明的,但它现在是由国际标准化组织(ISO ...
- python使用微信设置-微信 python 接口 -- itchat 文档
itchat 一. 安装 $ pip install itchat 特殊的字典使用方式 通过打印 itchat 的用户以及注册消息的参数, 可以发现这些值都是字典. 但实际上 itchat 精心构造了 ...
- python——读取docx文档wordcloud生成词云并进行词频统计
文章目录 环境准备 导入库 读取docx并进行分词 词频 词云 设置背景图片(可选) 生成词云 保存词云并显示 环境准备 # 不是docx,是python-docx!!!!!!! pip instal ...
- python docx 合并文档 图片_Python检查Word文件中包含特定关键字的所有页码
推荐教材:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社图书详情:配套资源:用书教师可以联系董老师获取教学大纲.课件.源码.教案.考试系 ...
- python 合并word文档,实现同一个文件夹下面的word合并成一个word
python 合并word文档,实现同一个文件夹下面的word合并成一个word -- coding:utf-8 -- import win32com.client as win32 import o ...
- python关闭word文件_使用Python退出Word文档的问题
这是我第一次使用这个,所以要友好:)基本上我的问题是我正在制作一个程序,用于打开许多Microsoft Word 2007文档并从该文档的某个表中读取并写入该信息的Excel文件有超过1000字的文档 ...
- Python读取.txt文档内容/读取text文件内容
Python读取.txt文档内容/读取text文件内容; 读取txt后缀文件的内容的两种方式,简约易懂,复制粘贴即可食用,节约你宝贵的时间 文档全部数据一次性读取 # -*- coding: UTF- ...
最新文章
- 计算机网络 关于网速,关于电脑网速慢的说明
- 各浏览器中for in顺序的差异
- 基于开源Flash Server:Red5构建RTMP流媒体播放平台
- 【转载】细聊冗余表数据一致性(架构师之路)
- thinkphp命名空间
- python queue 生产者 消费者_生产者、消费者模型---Queue类
- 加密算法-MD5算法
- 学习swift从青铜到王者之Swift控制语句04
- CS224N笔记——高级词向量表示
- QI精小无线充电接收模块(带线圈)可以输出5V,4.2V,QI协议,22MM圆形,500MA电流拿了即可使用
- 最小二乘支持向量机(LSSVM)学习记录
- Ribbon界面介绍
- 查看计算机启动项命令,启动项指令命令有哪些?教你设置电脑Windows开机启动项命令...
- 计算机音乐蜗牛与黄鹂鸟,幼儿园中班教案:中班音乐《蜗牛与黄鹂鸟》教案模板...
- python对淘宝运营有帮助吗_淘宝运营,有前途吗?
- HTML5期末大作业:电影网站设计——电影我不是药神响应式页播(4页) HTML+CSS+JavaScript 大学生电影网页作品 影视网页设计作业模板 学生网页制作源代码下载
- android 开发 关机没有关机铃声动画 显示正在关机pop框,关机 – Pop's Blog
- CentOS版飞鸽传书
- python中字母数字的大小比较_python列表怎么比较大小
- 【报告分享】2021潮流服装消费趋势报告-CBNData(附下载)