python中的文件读写和C兼容
读文件
过程:
1. 打开文件
2. 读文件内容
3. 关闭文件
打开文件
- open(path, flag[, encoding][, errors])
参数皆为字符串
path:要打开文件的路径
flag:打开文件的方式
r 以只读的方式打开文件,文件的描述符放在文件的开头
r+ 打开一个文件用于读写,文件必须存在
w 打开一个文件只用于写入,如果该文件已经存在,会覆盖,不存在则创建新文件
w+ 打开一个文件用于读写,文件不存在就创建一个
a 追加
a+ 读写,如果该文件已存在,则打开时会是追加模式,如果没有就创建
rb 以二进制格式打开一个文件用于只读,文件的描述符放在文件的开头
wb 以二进制格式打开一个文件用于只写入2进制
ab 以二进制格式追加
rb+
wb+
ab+
ps:硬盘上真正存储的为二进制文件
encoding:编码方式,常用的为utf-8和gbk
errors:错误处理,常用的是不处理
path = "file1.txt"
f = open(path,"r", encoding="utf-8", errors="ignore") #f指向打开的文件
#后面两参数可以不写
读文件
- 读取文件的全部内容
path = "file1.txt"
f = open(path,"r", encoding="utf-8", errors="ignore")
#法一,一次读完
str1 = f.read() #适合读文件比较小的
#法二,读取指定字符数
str2 = f.read(10)
print(str2)
#法三,读取整行,包括"\n"字符
str3 = f.readline()
#法四,读取指定字符数
str4 = f.readline(10) #读取10个字符
#法五,读取所有行并返回列表,如果指定了参数,如果指定参数大于0,则返回实际size字节的行数,及时上很少传参
lsit5 = f.readlines([size])
#关于文件的读,是一直往后读。eg:没读一个字符,就往后移动一个字符
写文件
f.write(要写入的字符串)
在写文件时,如果要实现在写入的文件中换行,则在字符串末尾添加"\n"即可。(有的系统是"\r\n"
修改描述符的位置
f.seek(0)
f.seek(offset, from)
#offset:右为正,左为负
#from:0:表示文件的开头,1:表示当前位置,2:表示文件的结尾
f.tell() #能够告诉我们程序读到了哪个位置
关闭文件
f.close()
一个完整过程
try:
f1= open(path,"r",encoding="utf-8") #通常写入中文的时候需要指定编码格式
print(f1.read())
finally:
if f1:
f1.close()
#简洁写法,不用自己关闭文件,with即自动关闭文件
with open(path,"r", encoding="utf-8") as f2:
print(f2.read())
编码
常用编码:GBK、Unicode(等长编码)、UTF-8(变长编码)
bytes_gbk = "张三".encode("GBK")
print(bytes_gbk)
print(type(bytes_gbk))
bytes_utf8 = "张三".encode("UTF-8")
print(bytes_utf8)
print(type(bytes_utf8))
str = bytes_gbk.decode("GBK")
print(str)
str = bytes_utf8.decode("UTF-8")
print(str)