时隔一个月再次继续更新内容,中间经历了假期、写脚本、测试...
上篇文章讲述了文件操作的基本用法,接着继续讲述一些常用参数或函数
-
open()常用参数
- encoding参数,指定待打开文件使用的编码,文件的读写操作默认使用系统编码,可通过调用
sys.getdefaultencoding()
来得到,通常为utf8 - newline参数,指定换行符,取的值有None, '\n', '\r', '', '\r\n'
- errors参数,编码错误时,可使用该编码来处理。取值一般有replace,strict,ignore,当取replace时,乱码代替;当取strict的时,若字符编码出现问题,会报错;当取ignore的时,编码出现问题,程序会忽略而过,继续执行下面的程序
- encoding参数,指定待打开文件使用的编码,文件的读写操作默认使用系统编码,可通过调用
示例:errors字段使用
#test.txt文件内容:
"""
hi he
问问
"""
with open("test.txt","rt",encoding="ascii",errors="ignore") as p :
print(p.read())
上述例子中的文件编码为utf-8,为了测试,特意标明打开的编码是ascii,若不使用errors="ignore",会报错。当然,打开文件时尽量使用正确的编码,万不得已才使用errors字段处理编码问题
-
print()函数常见参数
- file 关键字参数,将打印的输出内容重定向到文件
- seq参数或end参数,改变默认的分隔符或者行尾符
#将print打印的输出内容重定向至test.txt文件中
with open("test.txt","w") as p :
print("我是一只小小鸟",file=p)
row=["1","2",3]
print(*row)#1 2 3
print(*row,sep=",") #1,2,3
print(*row,end=",")#1 2 3,
-
二进制与文本模式
二进制模式的文件中读取或写入文本数据,必须确保要进行解码和编码
decoding() 解码
encoding() 编码 -
x模式(python3特有)
文件不存在时写入,存在则报FileExistsError
错误
with open("test1.txt","x") as p :
p.write(111)
-
在内存中操作str和bytes的方法
数据读写不一定在文件,也可以在内存中,python3 中,见io模块中的StringIO()
、BytesIO()
类,python2有点区别- StringIO用于str,在内存中开辟一个文本模式的buffer,当
close()
方法被调用的时候,buffer被回收 - BytesIO 用于bytes,类似
StringIO
以上创建的对象,大部分方法的用法类似文件操作对象。唯一区别是文件是存储在硬盘上,而StringIO()
、BytesIO()
创建的对象读取或者写入的数据在内存,当内存断电,数据会丢失
- StringIO用于str,在内存中开辟一个文本模式的buffer,当
from io import StringIO#python3
s=StringIO()
s.write("我是一只小小鸟")
print(s.getvalue())#获得所有数据
#要像读文件一样读取StringIO,可以用一个str初始化StringIO
f=StringIO("我是一只小小鸟")
print(f.readline())
网友评论