码迷,mamicode.com
首页 > 编程语言 > 详细

Python之读写文本数据

时间:2019-03-08 18:34:03      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:编码   文本   test   参数   读取   pytho   some   原则   覆盖   

知识点不多

普通操作 

# 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中是不一样的(分别是 \n 和 \r\n )。 默认情况下,Python会以统一模式处理换行,识别普通换行符并将其转换为单个 \n 字符
# 如果你不希望这种默认的处理方式,可以给 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 = bHello 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之读写文本数据

标签:编码   文本   test   参数   读取   pytho   some   原则   覆盖   

原文地址:https://www.cnblogs.com/zzy-9318/p/10497428.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!