Python之读写文本数据
Posted 朱兆筠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之读写文本数据相关的知识,希望对你有一定的参考价值。
知识点不多
普通操作
# rt 模式的 open() 函数读取文本文件 # wt 模式的 open() 函数清除覆盖掉原文件,write新文件 # at 模式的 open() 函数添加write新文件 with open("../../testData","rt",encoding="utf-8") as f : for line in f : print(line) # 写操作默认使用系统编码,可以通过调用 sys.getdefaultencoding() 来得到,也以通过传递一个可选的 encoding 参数给open()函数,几个常见的编码是ascii, latin-1, utf-8和utf-16 # 关于换行符的识别问题:在Unix和Windows中是不一样的(分别是 和 )。 默认情况下,Python会以统一模式处理换行,识别普通换行符并将其转换为单个 字符 # 如果你不希望这种默认的处理方式,可以给 open() 函数传入参数 newline=‘‘ f =open(‘somefile.txt‘, ‘rt‘, newline=‘‘) # 最后一个问题就是文本文件中可能出现的编码错误 # 如果修改了编码方式之后,编码错误还是存在的话,你可以给 open() 函数传递一个可选的 errors 参数来处理这些错误。 m = open(‘sample.txt‘, ‘rt‘, encoding=‘ascii‘, errors=‘replace‘) # 如果你经常使用 errors 参数来处理编码错误,也是不好的。 # 原则是确保你总是使用的是正确编码。当模棱两可的时候,就使用默认的设置(通常都是UTF-8)。
打印输出至文件中
with open(‘../../testData‘, ‘at‘) as f: print(‘Hello python!‘, file=f) # 使用其他分隔符或行终止符打印 # 使用 print() 函数输出数据,但是想改变默认的分隔符或者行尾符,使用sep end print("hello","cool","zzy",sep="***",end="!") # hello***cool***zzy! #使用 str.join() print("***".join(("hello","cool","zzy"))) # hello***cool***zzy # 对比 row = ("hello","cool","zzy") print(*row,sep="***") # hello***cool***zzy
读写字节数据
# 读写二进制文件,比如图片,声音文件,使用模式为 rb 或 wb 的 open() 函数 # 在读取二进制数据的时候,字节字符串和文本字符串的语义差异可能会导致一个潜在的陷阱:索引和迭代动作返回的是字节的值而不是字节字符串 a=‘Hello World‘ print(a[0]) # H b = b‘Hello World‘ # Byte string print(b[0]) # 72 索引和迭代动作返回的是字节的值而不是字节字符串 # 如果你想从二进制模式的文件中读取或写入文本数据,必须确保要进行解码和编码操作 # 解码 with open("../../testDta","rb") as f : data=f.read(16) text=data.decode("utf-8") # 编码 with open("../../testDta","wb") as d : text="hello" f.write(text.encode("utf-8"))
以上是关于Python之读写文本数据的主要内容,如果未能解决你的问题,请参考以下文章