新内容:

一、概述:

  1、内存  存不长久

 2、 硬盘  数据的持久化

  3、文件操作----数据的持久化的一种

  4、全栈开发:框架类

二、初识文件处理

   1、文件中读取出来的所有东西都是字符串

流程:找到文件——打开文件——操作——保存——关闭

    (1)以写“w"”的方式打开任何文件都会将原来的内容清空,特别小心对待

            命名规则: f    file f_obj    f_handle     fh

            writable     readable  的使用

f=open("你好a","w",encoding="utf-8")          #f:文件操作符,文件句柄,文件操作对象
#文件操作符  习惯叫   f   file  f_obj  f_handle   fh

#open 打开文件是依赖操作系统的提供的途径
#操作系统有自己的编码,open 在打开文件的时候默认使用操作系统的编码
#win: gbk   mac/linux :utf-8
print(f.writable())      #判断文件是否可写
print(f.readable())      #判断文件是否可读
f.write("122432")          #写文件时需要写数字,需要把数字转换成字符串
f.write("\naksjf")         #文件的换行
f.write("好好学习")         #utf-8  unicode  gbk
f.close()          #使用完文件之后 一定要关闭

(2)如何找到文件

    在相同文件夹下可以直接执行文件名

    在不同文件夹下,直接执行路径

     如果以写的方式打开一个文件,文件不存在则创建一个新的文件,存在的文件之前的内容会被清空

   在获取路径之前加r  可使\失效  和\\  的作用相同(文件的路径,需要取消转译的方式表示:1、\\  2、r)

f=open(r"C:\Users\Administrator\Desktop","w",encoding="utf-8")   #文件路径,操作模式,编码
f.write("hahahha")
f.close()

(3)关闭文件详情

    1、操作系统级别的关闭文件资源:   f.close()    必须要写的

    2、del   f 主动释放了一个python程序内存中的变量  可写可不写

 

2、读取文件

         第一种方法:read 一次性读出文中所有的内容

         第二种方法   read(n)指定读 n个单位

        (如果第一种方法和第二种方法同是使用,则第二种方法不会被读取,因为光标已经移动完毕)     

f=open("你好",encoding="utf-8")
# 第一种:
content=f.read()
print(content)
# 第二种:
content1=f.read(5)
print(content1)

       第三种方法:readline  按照行读,每次执行readline 都会往下读一行

                         strip()可以去掉空格,制表符,换行符   一个print  相当于一个\n

       第四种方法:  readlines  将文中的每一行作为列表中的每一项返回一个列表         

f=open("你好",encoding="utf-8")
# 第三种
content=f.readline()
print(content.strip())
# 第四种
content1=f.readlines()
print(content1)
f.close()

   第五种 方法:利用for循环 (最常用的)

f=open("你好",encoding="utf-8")
# 第五种
for l in f:
    print(l.strip())
f.close()

3、例题  :购物车

价格文件

apple 10 3
tesls 1000000 1
mac 3000 2
lenovo 30000 3
chicken 10 3
computer 6000 5
computer 6000 5
f=open("你好",encoding="utf-8")
goods_list=[]
for line in f:
    if line.strip():                #只显示有内容的行
        goods_dic={"name":None,"price":None}
        line=line.strip()
        goods_lst=line.split()
        goods_dic["name"]=goods_lst[0]
        goods_dic["price"]=goods_lst[1]
        goods_list.append(goods_dic)
print(goods_list)
f.close()
购物车程序

 

 4、追写    appending 

f=open("你好","a",encoding="utf-8")
f.write("\ncomputer  6000 5")
f.close()

5、 (1)  r+  可读可写

          1、先读后写,写的是追写

           2、先写后读:从头开始写

f=open("你好a","r+",encoding="utf-8")
content=f.readline()
print(content)
f.write("123adsa")    #追写  
f.close()
f=open("你好a","r+",encoding="utf-8")
f.write("123adsa")       #先清空再追写,运行一次增加一次
content=f.readline()
print(content)
f.close()

        w+  可写可读:一上来文件就清空了

             尽管可读1)但是你读出来的内容是你这次打开文件新写入的

                          2)光标在最后需要你主动移动光标才可读(使用   seek(0))         

f=open("你好a","w+",encoding="utf-8")
f.write("123adsa\n")
f.write("aaaaaa")
f.seek(0)
print(f.read())
f.close()

        a+   追加可读    在python中没有改文件这个功能

f=open("你好a","a+",encoding="utf-8")
f.write("123adsa\n")
f.write("aaaaaa")
f.seek(0)
print(f.read())
f.close()

(4)一般情况下:文件操作,要么读,要么写,很少会使用读写,写读同时使用(因为光标的移动会导致读写文件混乱)

        常用的:r   w  a 

                    rb  wb  ab  不需要指定编码(因为是以二进制的形式读写) 

           b一般在读写文件时使用(文件的上传和下载),例如图片、视频等