zoukankan      html  css  js  c++  java
  • day9 文件处理

    新内容:

    一、概述:

      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("
    aksjf")         #文件的换行
    f.write("好好学习")         #utf-8  unicode  gbk
    f.close()          #使用完文件之后 一定要关闭

    (2)如何找到文件

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

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

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

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

    f=open(r"C:UsersAdministratorDesktop","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  相当于一个

           第四种方法:  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("
    computer  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
    ")
    f.write("aaaaaa")
    f.seek(0)
    print(f.read())
    f.close()

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

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

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

            常用的:r   w  a 

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

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

  • 相关阅读:
    Python之路-(js正则表达式、前端页面的模板套用、Django基础)
    Python之路-jQuery
    单例模式实际应用
    hibernate联合主键注解配置
    spring:ContextLoaderListener接口
    Struts2 校验
    Control character in cookie value, consider BASE64 encoding your value-Cookie保存中文出错[转]
    基于Cookie跨域的单点登录问题
    Spring:启动项目时加载数据库数据(总结)
    Oracle表分区[转]
  • 原文地址:https://www.cnblogs.com/number1994/p/7903121.html
Copyright © 2011-2022 走看看