【2017-10-30】文件与IO(二)

时隔一个月再次继续更新内容,中间经历了假期、写脚本、测试...

上篇文章讲述了文件操作的基本用法,接着继续讲述一些常用参数或函数

  • open()常用参数
    • encoding参数,指定待打开文件使用的编码,文件的读写操作默认使用系统编码,可通过调用sys.getdefaultencoding()来得到,通常为utf8
    • newline参数,指定换行符,取的值有None, '\n', '\r', '', '\r\n'
    • errors参数,编码错误时,可使用该编码来处理。取值一般有replace,strict,ignore,当取replace时,乱码代替;当取strict的时,若字符编码出现问题,会报错;当取ignore的时,编码出现问题,程序会忽略而过,继续执行下面的程序

示例: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()创建的对象读取或者写入的数据在内存,当内存断电,数据会丢失
from io import StringIO#python3
s=StringIO()
s.write("我是一只小小鸟")
print(s.getvalue())#获得所有数据
#要像读文件一样读取StringIO,可以用一个str初始化StringIO
f=StringIO("我是一只小小鸟")
print(f.readline())
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容