day13文件读写

  1. 读文件
    过程:
    a. 打开文件
    b. 读文件内容
    c. 关闭文件

a. 打开文件
open(path,flag, [encoding],[errors])
path: 要打开文件的路径
flag: 打开方式
r 以只读的方式打开文件,文件的描述符放在文件的的开头
rb 以二进制格式打开一个文件用于只读,文件的描述符放在文件的开头
r+ 打开一个文件用于只读
w 打开一个文件用于写入,如果该文件已经存在会覆盖,不存在则会新创建一个
wb 打开一个文件只用于写入二进制,如果该文件已经存在会覆盖,不存在则会新创建一个
a 打开一个文件用于追加,如果文件存在,文件描述符将会放在文件末尾
encoding:编码方式
errors: 错误处理

path = 'D:\python学习进度\day13文件读写\\file1.txt'
f = open(path,'r',encoding='utf-8')

b. 读文件

read()  - - 读取全部内容
read(n)  - -  读取指定的字符数
readline()  - - 读取整行  包括 \n 字符
readlines()  --- 读取所有行 返回列表

#   修改描述符的位置
f.seek(0)

c. 关闭文件

f.close()
简单的完整的过程
with open(path,'r',encoding='utf-8') as f2:
    print(f2.read())

写文件

读一个文件

path = 'file2.txt'
f = open(path,'w',encoding='utf-8')

写文件

1. 将文件写入缓冲区
f.write('hello  world')

2. 刷新缓冲区 - 直接把内部缓冲区的数据立刻写入文件,而不是被动的等待自动刷新缓冲区
f.flush

3. 关闭文件
f.close

简单的写文件方法
with open(path,'a') as f2:
     f2.write('name ,is')

编码与解码

path = 'file4.txt'
编码
with open(path,'wb') as f1:
    str = 'sdfsd sdfa fa a'
    f1.write(str.encode('utf-8'))   #  二进制写文件进行编码
with open(path,'rb') as f2:
    data = f2.read()
     print(data)
      new_data = data.decode('utf-8')  # 解码
      print(new_data)

总结:二进制的存文件 读文件 要编码 再解码
import pickle  #  数据持久性模块  相当于把数据存到磁盘中
myList = [1,2,3,4,5,'sdfd']
path = 'file1.txt'
with open(path,'wb') as f:
    pickle.dump(myList,f)
     f.close()
读取
with open(path,'rb') as f1:
        tempList = pickle.load(f1)
          print(tempList)
          f1.close()

你可能感兴趣的:(day13文件读写)