首页 / PYTHON / python 读写文件
python 读写文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python 读写文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2327字,纯文字阅读大概需要4分钟。
内容图文
![python 读写文件](/upload/InfoBanner/zyjiaocheng/765/8fa64e629442422ba3f5eeddb8f976b9.jpg)
0,文件有两种类型:文本文件和二进制文件。
1,首先用到内置的open()函数,创建一个stream对象。
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
常用的参数三个:1,file文件名;2,mode文件打开模式;3,encoding编码(只对文本文件有效)
mode打开模式:
'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)
2,读取一个文本文件:
file = open("test.txt")
data = file.read()
file.close()
这里有两个问题。一是可能忘记关闭文件句柄;二是文件读取数据发生异常,没有进行任何处理。下面是处理异常的加强版本:
file = open("test.txt")
try:
data = file.read()
finally:
file.close()
虽然这段代码运行良好,但是太冗长了。这时候就是with一展身手的时候了。
with open("test.txt") as file:
data = file.read()
3,面对文本文件,对象提供了三个“读”方法:read()、readline()和readlines()。每种方法可以接受一个变量以限制每次读取的数据量。
read()每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。如果文件大于可用内存,为了保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。
readlines()一次读取整个文件,自动将文件内容分析成一个行的列表。
readline() 每次只读取一行。
注意:
这三种方法是把每行末尾的'\n'也读进来了,它并不会默认的把'\n'去掉,需要我们手动去掉。字符串的rstrip('\n')方法去掉后面的字符'\n'
文件对象提供了两个“写”方法: write() 和 writelines()。
4,遍历文件的所有行,也可以用遍历文件对象的方式:
for line in file:
print(line)
5,文件对象的位置
前面的例子中,我们已经读到文件的末尾,如果要再从头读的话就要调用f.seek(0)来设置文件对象的位置到文件开头。
这个方法有两个参数:f.seek(cookie, whence=0)
cookie 是位置偏移量
whence 是相对位置,它有三种相对位置:
0 文件开头,偏移量是0或整数;
1 当前位置,偏移量可以是负数;
2 文件末尾,偏移量通常是负数;
如何查看当前位置呢?调用f.tell()方法。
6,字符编码
对于文本文件,可能需要给open()函数传入encoding参数,例如,读取utf-8编码的文件:
f = open('test.txt', 'r', encoding='utf-8')
f.read()
遇到有些编码不规范的文件,open()函数还可以接收一个errors参数,表示如果遇到编码错误后如何处理。最简单的方式是直接忽略:
f = open('test.txt', 'r', encoding='gbk', errors='ignore')
内容总结
以上是互联网集市为您收集整理的python 读写文件全部内容,希望文章能够帮你解决python 读写文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。