python学习-文件的输入、输出
文件的输入输出
文件:数据持久化最简单的类型,也叫平面文件(flat file)。它仅仅是一个文件名下的字节流,把数据从一个文件读入内存,然后从内存写入文件。
读一个文件之前需要打开它,之后可以调用函数来读写数据,最后需要关闭文件。
fileobj = open(filename,mode)
fileobj 是open()返回的文件对象;
filename 是该文件的字符串名;
mode 是指明文件类型和操作的字符串;
mode的第一个字母表明对其的操作:
r 表示读模式
w 表示写模式。如果文件不存在则新创建,如果存在则重写新内容
x 表示文件不存在的情况下新创建并写文件
a 表示如果文件存在,在文件末尾追加写内容
mode 的第二个字母是文件类型:
t (或省略)代表文本类型
b 代表二进制文件
使用write()写文件
>>>poem="""There was a young lady named Bright,\whose speed was far faster than light;\She started one day \In a relative way,\And returned on the previous night.""">>> len(poem)
167
>>> fout = open('relativity','wt') #文件默认放在python的根目录下D:\python3
>>> fout.write(poem)
167
>>> fout.close()
>>> fout = open('relativity1','wt')
>>> print(poem,file=fout) # 169 print()默认会在每个参数后添加空格,在每行结束处添加换行。它在文件relativity1中默认添加了一个换行。
>>> fout.close()
使用如下参数,保证print()与write()有同样的输出:
sep分隔符:默认是一个空格 ‘ ‘
end 结束字符:默认是一个换行符 ‘\n’
>>> fout = open('relativity2','wt')
>>> print(poem,file=fout,sep='',end='') #167
>>> fout.close()
>>>
如果源字符串非常大,可将数据分块,直到所有字符被写入:
>>> fout = open('relativity3','wt')
>>> size = len(poem)
>>> offset = 0
>>> chunk = 100
>>> while True:if offset > size:breakfout.write(poem[offset:offset+chunk])offset+=chunk
100
67
>>> fout.close()
如果‘relativity’文件已经存在,可使用模式x 避免重写文件,还可加入一个异常处理:
>>> try:fout = open(‘relativity’,’xt’)fout.write(‘stomp stomp stomp’)except FileExistsError:print(‘relativity already exists!. That was a close one.’)
使用read()、readline()或者readlines()读文本文件
>>> fin = open('relativity','rt')
>>> poem = fin.read()
>>> fin.close()
>>> len(poem)
167
>>>
可设置最大的读入字符数限制read()函数一次返回的大小,然后把每一块拼接成原来的字符串
>>> poem=''
>>> fin = open('relativity','rt')
>>> chunk = 100
>>> while True:fragment = fin.read(chunk) #read会记住已读取得位置if not fragment: # 读到文件结尾之后,再次调用read()会返回空字符串(‘’),if not fragment条件被判为Falsebreakpoem += fragment>>> fin.close()
>>> len(poem)
167
也可使用readline()每次读入文件的一行,通过追加每一行拼接成原来的字符串poem:
>>> poem = ''
>>> fin = open('relativity','rt')
>>> while True:line = fin.readline() #对一个文本文件,即使空行也有1个字符长度(换行字符’\n’)if not line: #当line非空时,返回True,当文件读取结束,readline()返回空字符串,返回为Falsebreakpoem += line
>>> fin.close()
>>> len(poem)
167
读取文本文件最简单的方式是使用一个迭代器(iterator),它会每次返回一行。
>>> poem = ''
>>> fin = open('relativity','rt')
>>> for line in fin:poem += line
>>> fin.close()
>>> len(poem)
167
>>>
函数readlines()调用时每次读取一行,并返回单行字符串的列表。
使用write()写二进制文件
如果文件模式字符串中包含’b’,那么文件会以二进制模式打开,这种情况下,读写的是字节而不是字符串。
>>> bdata = bytes(range(0,256))
>>> len(bdata)
256
>>> fout = open('bfile','wb')
>>> fout.write(bdata)
256
>>> fout.close()
使用read()读二进制文件
>>> fin = open('bfile','rb')
>>> bdata = fin.read()
>>> len(bdata)
256
>>> fin.close()
使用with自动关闭文件
忘记关闭已打开的文件,函数结束时会被关掉。Python的上下文管理器(context manager)会清理一些资源,例如打开的文件,应该强制剩下的所有写操作完成后再关闭文件。它的形式为:with expression as variable:
>>> with open(‘relativity’,’wt’) as fout:fout.write(poem)
完成上下文管理器的代码后,文件会被自动关闭
使用seek()改变位置
函数tell()返回距离文件开始处的字节偏移量,函数seek()允许跳转到文件其他字节偏移量的位置。
>>> fin = open('bfile','rb')
>>> fin.tell()
0
>>> fin.seek(255)
255
用第二个参数调用函数seek():seek(offset,origin)
如果origin等于0(默认为0),从开头偏移offset个字节;
如果origin等于1,从当前位置处偏移offset个字节;
如果origin等于2,距离最后结尾处偏移offset个字节;
这些值也在标准os模块中被定义:
>>> os.SEEK_SET
0
>>> os.SEEK_CUR
1
>>> os.SEEK_END
2
python学习-文件的输入、输出相关推荐
- 独家|OpenCV1.8 使用XML和YAML文件实现文件的输入/输出
翻译:陈之炎 校对:李海明本文约2400字,建议阅读5分钟本文为大家介绍了OpenCV使用XML和YAML文件实现的输入输出. 目标 本小节将回答以下问题: 如何使用YAML或XML文件打印和读取文本 ...
- python安装文件乱码_python输出到文件乱码如何解决
python代码文件的编码 py文件默认是ASCII编码,中文在显示时会做一个ASCII到系统默认编码的转换,这时就会出错:SyntaxError: Non-ASCII character.需要在代码 ...
- 文件输出 java_用Java读写文件(输入/输出)-教程
一.文件的Java I/O(输入/输出) 1.1.概述 在现代Java应用程序中,通常使用Java.nio.fileAPI来读写文件. Java将把所有输入作为字节流读取.input stream类是 ...
- linux c文件操作,Linux C 文件的输入/输出操作
10.1 文件I/O操作概述 在Linux系统中,文件I/O操作可以分为两类,一类是基于文件描述符的I/O操作,另一类是基于数据流的I/O操作. 10.1.1 文件描述符简介 在文件操作一章中,也经常 ...
- 文件的输入/输出操作
10.1 文件I/O操作概述 在Linux系统中,文件I/O操作可以分为两类,一类是基于文件描述符的I/O操作,另一类是基于数据流的I/O操作. 10.1.1 文件描述符简介 在文件操作一章中,也经常 ...
- C基础学习之C 输入 输出
目录 标准文件 getchar() & putchar() 函数 gets() & puts() 函数 scanf() 和 printf() 函数 当我们提到输入时,这意味着要向程序填 ...
- python学习总结7 - 输入与输出【格式化字符串及读写文件】
文章目录 输入与输出 1.更复杂的输出格式 1.1 格式化字符串字面值(3.6版本加入) 1.2 字符串的format方法 1.3 手动格式化字符串 1.4 旧式字符串格式化方法 2.读写文件 2.1 ...
- Python学习笔记:输入和输出
本文来自:入门指南 开胃菜参考:开胃菜 使用Python解释器:使用Python解释器 本文对Python的简介:Python简介 Python流程介绍:深入Python流程 Python数据结构:P ...
- python学习笔记 --- print (输出到文件 file)
print 输出直接到文件里 主要是python版本问题,语法不一样,这里记录一下. python 3.x #!/usr/bin/env python3 #coding:utf-8 K = 10 f ...
最新文章
- 热门云服务超87GB电子邮箱和密码泄露,黑客已验证大部分数据
- 清华大学朱军:深度生成模型、算法和概率编程库(附视频+PPT)
- 老男孩教育参观云计算公司
- 如何降低SQL语句复杂度
- 第五十四期:Libra盟友纷纷“跳船”,联盟链还有戏吗?
- ubuntu清空回收站
- gc:C语言的垃圾回收库-中文
- WHATWG API——url.parse()的替代方案
- x5内核有什么优点_关于接入腾讯X5内核的一些坑(不断更新)
- R语言 需要安装的包
- Silverlight 4 帮助文件例子的连接
- Java图片上查找图片算法
- 树莓派 之 USB摄像头安装和使用
- 循环中使用switch在执行条件后使用break和continue的区别
- Power BI中计算同比、环比
- 敬畏传奇——直面第一台可编程电子计算机:Colossus
- Dashboard的安装及其配置
- onnx 模型推理示例-Python 实现 |【onnx 模型推理】
- Excel解析与数据生成(撑持JXL,POI)
- 立创EDA学习2-绘制原理图(初级)
热门文章
- CentOS下载Nginx
- PreTranslateMessage和TranslateMessage区别(转)
- IMP-00038: Could not convert to environment character set's handle
- 错误1053服务没有及时_Windows7 错误1053:服务没有及时响应启动或控制请求解决办法...
- echarts的柱状图立体效果解决方案 echarts.graphic.LinearGradient
- Revit2020 SDK安装后无AddIn Manager文件(已解决)
- VNCTF2022_Misc_复现
- 论文阅读:Making Smart Contracts Smarter
- 还在手写代码?用了这个工具,不用一行代码也能做出网站
- (第八章) UI--PS 基础 滤镜