在文本模式下读取时,默认会把平台特定的行结束符 (Unix 上的 \n, Windows 上的 \r\n) 转换为 \n。在文本模式下写入时,默认会把出现的 \n 转换回平台特定的结束符。这样在幕后修改文件数据对文本文件来说没有问题,但是会破坏二进制数据例如 JPEG 或 EXE 文件中的数据。请一定要注意在读写此类文件时应使用二进制模式。
open( 文件名路径 , 打开方式 ) 打开文件
通常使用和 with as 语法一起使用
with open(’/home/myfile’,‘a/w/r’) as f1:
f1.read() #读取文件的全部数据
f1.readline() # 读取文件的一行数据
a/w/r+ b 等于 按照二进制打开
二进制打开可以保护文件格式不被改变,对于文本文件通常没有必要
但是会破坏二进制数据例如 JPEG 或 EXE 文件中的数据。请一定要注意在读写此类文件时应使用二进制模式。
其中 w 打开文件会截断
f1.close() 手动关闭文件
f.write(string) 会把 string 的内容写入到文件中,并返回写入的字符数。:
#写入文件 with open('file1','w+') as f1: for i in range(5): f1.write('第 {:_^10} 行内容\n'.format(i)) #读取文件 #要从文件中读取行,你可以循环遍历文件对象。这是内存高效,快速的,并简化代码: with open('file1','r+') as f1: for line1 in f1: print(line1.decode(),end='') 第 ____0_____ 行内容 第 ____1_____ 行内容 第 ____2_____ 行内容 第 ____3_____ 行内容 第 ____4_____ 行内容
#按照二进制读取 with open('file1','rb+') as f1: #按照字符串读取 with open('file1','r+') as f1: #str to bytes str_to_bytes = str1.encode(encoding='utf8') # bytes to str 不指定编码方式的时候,默认按照 utf8 进行编码解码 bytes_to_str = bytes1.decode()