Python21_文件读写

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)

猜你喜欢

转载自blog.csdn.net/qq_34873298/article/details/89685557