zoukankan      html  css  js  c++  java
  • 文件操作

    0、文件操作的作用:持久化存储。

    1、file路径。

      相对路径:相对于当前运行的文件目录。

      绝对路径:从磁盘根部开始查找的就是绝对路径。

      获取当前工作路径用getcwd:import os

                     print(os.getcwd())
    转义:\  普通的
        r   转义  r要加在路径的外面。

    2、mode = 操作文件的方式:   r 只读文本:

                  w清空写文本:(意思是否包含.read()操作、这个是不包含read操作)

                  a追加写文本:

                  rb只读字节:用于图片读字节。

                  wb清空写字节:用于字节转图片。

                  ab追加写字节:

                  r+:

                  w+:清空写读:(意思是否包含.read()操作、这个是包含read操作)

                  a+:追加写读(防止报错)

                  open打开:

                  f文件句柄:

    3、文件的编码。

    4、 f.read()全部读取、文件读取时只能读一行。

      read(3)  模式的r的情况下按照字符读取。

      readline  读取一行。

      readlines  读取多行、以列表的形式存储。

    5、rb读字节:

    f = open("2.png","rb")
    print(f.read())
    6、w清空写:有文件时清空文件、没文件时创建文件、打开文件时自动清空文件内容、写入内容
    7、f.close()  关闭文件
    8、f.flush()    刷新
    9、         回车
    10、a      追加写、没文件时创建文件、一直在文件的末尾进行添加。
    11、r+      可读可写:
      先读后写:  
    f = open("test","r+",encoding="utf-8")
              a = f.read()
              print(a)
              f.write("这是读写")
      先写后读:   f = open("test","r+",encoding="utf-8")
              f.write("这是读写")
              a = f.read()
              print(a)
    12、w+  清空写、读:
    13、f.seek(0,0)  移动光标、移动到文件的头部。
      f.seek(0,1)  移动到光标当前位置
      f.seek(0,2)  移动到文件末尾
    14、a+        追加写、读
    15、查看光标、返回的是字节用tell:
      f.tell()
    16、with open  自动关闭文件、可以同时操作多个文件。
    17、文件的修改:  os.rename  重命名文件名
    18、文件中存储的都是字符串。
    19、写入内容时只能写入字符串。
    作业题:
    # 1.有如下文件,a1.txt,里面的内容为:
    # 老男孩是最好的学校,
    # 全心全意为学生服务,
    # 只为学生未来,不为牟利。
    # 我说的都是真的。哈哈
    # 分别完成以下的功能:
    # a,将原文件全部读出来并打印。
    f = open("a1.txt","r",encoding="utf-8")
    print(f.read())
    # b,在原文件后面追加一行内容:信不信由你,反正我信了。
    with open("a1.txt","a",encoding="utf-8") as f:
    f.write("信不信由你,反正我信了。")
    # c,将原文件全部读出来,并在后面添加一行内容:信不信由你,反正我信了。
    with open("a1.txt","a",encoding="utf-8") as f:
    f.write("信不信由你,反正我信了。 ")
    # d,将原文件全部清空,换成下面的内容:
    # 每天坚持一点,
    # 每天努力一点,
    # 每天多思考一点,
    # 慢慢你会发现,
    # 你的进步越来越大。
    with open("a1.txt","w+",encoding="utf-8") as f:
    f.write("每天坚持一点, "
    "每天努力一点, "
    "每天多思考一点, "
    "慢慢你会发现, "
    "你的进步越来越大。")
    print(f.read())
    # 2.有如下文件,t1.txt,里面的内容为:
    # 葫芦娃,葫芦娃,
    # 一根藤上七个瓜
    # 风吹雨打,都不怕,
    # 啦啦啦啦。
    # 我可以算命,而且算的特别准:
    # 上面的内容你肯定是心里默唱出来的,对不对?哈哈
    # 分别完成下面的功能:
    # a,以r的模式打开原文件,利用for循环遍历文件句柄。
    with open("t1.txt","r",encoding="utf-8") as f:
    for i in f:
    print(i.strip())
    print("----------------------------------------------------------------------------------")
    # b,以r的模式打开原文件,以readlines()方法读取出来,并循环遍历 readlines(),并分析a,与b 有什么区别?深入理解文件句柄与 readlines()结果的区别。
    f = open("t1.txt","r",encoding="utf-8")
    f1 = f.readlines()
    for i in f1:
    print(i.strip()) #以readlines
    # c,以r模式读取‘葫芦娃,’前四个字符。
    f1 = open("t1.txt","r",encoding="utf-8")
    print(f1.read(4))
    print("////////////////////////////////////////////////////////////////////////////////")
    # d,以r模式读取第一行内容,并去除此行前后的空格,制表符,换行符。
    f = open("t1.txt","r",encoding="utf-8")
    f1 = f.readline().strip()
    print(f1)
    print("****************************************************************************")
    # e,以a+模式打开文件,先追加一行:‘老男孩教育’然后在从最开始将 原内容全部读取出来。
    f = open("t1.txt","a+",encoding="utf-8")
    f.write('老男孩教育')
    a = f.read()
    print(a)
    # 3.文件a.txt内容:每一行内容分别为商品名字,价钱,个数。
    # apple 10 3
    # tesla 100000 1
    # mac 3000 2
    # lenovo 30000 3
    # chicken 10 3
    # 通过代码,将其构建成这种数据类型:[{'name':'apple','price':10,'amount':3},{'name':'tesla','price':1000000,'amount':1}......] 并计算出总价钱。
    f = open("a.txt","r",encoding="utf-8")
    f1 = f.read()
    print(f1)
    # 4.有如下文件:
    # alex是老男孩python发起人,创建人。
    # alex其实是人妖。
    # 谁说alex是sb?
    # 你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。
    print("///////////////////////////////////////////////////////////")
    # 将文件中所有的alex都替换成大写的SB(文件的改的操作)。
    with open("a2.txt","r",encoding="utf-8") as f,
    open("a3.txt","w+",encoding="utf-8") as f1:
    for i in f:
    f1.write(i.replace("alex","SB"))
    f1.flush()
    import os
    os.rename("a2","a4")
    os.rename("a3","a2")
    # 5.文件a1.txt内容(选做题)
    # name:apple price:10 amount:3 year:2012
    # name:tesla price:100000 amount:1 year:2013
    # 通过代码,将其构建成这种数据类型:
    # [{'name':'apple','price':10,'amount':3,year:2012},
    # {'name':'tesla','price':1000000,'amount':1}......]
    # 并计算出总价钱。
    lst = []
    the_sum = 0
    f = open("a1.txt","r",encoding="utf-8")
    for i in f:
    dic = {}
    for em in i.split():
    k,v = em.split(":")
    dic[k] = v
    lst.append(dic)
    print(lst)
    for i in lst:
    the_sum += int(i["price"]) * int(i["amount"])
    print(the_sum)
    # 6.文件a1.txt内容(选做题)
    # 序号 部门 人数 平均年龄 备注
    # 1 python 30 26 单身狗
    # 2 Linux 26 30 没对象
    # 3 运营部 20 24 女生多
    # 通过代码,将其构建成这种数据类型:
    # [{'序号':'1','部门':Python,'人数':30,'平均年龄':26,'备注':'单身狗'},
    lst = []
    f = open("a1.txt","r",encoding="utf-8")
    a,b,c,d,e = f.readline().split()
    # print(a,b,c,d,e)
    for i in f:
    num,clas,people,age,remarks = i.split()
    dic = {a:num,b:clas,c:people,d:age,e:remarks}
    lst.append(dic)
    print(lst)
  • 相关阅读:
    C#中的多态
    一个JQUERY文件
    等比例缩放图片
    WIN7 环境下 VS2012 打开某些解决方案项目 提示 【已停止工作】 解决办法
    统计字符串中字符出现的次数
    LINQ关联表查询语法和.NET扩展方法和JSON.NET时间格式化代码段
    EasyUI表格datagrid合并行单元格
    一个导出Excel的类
    一个缩略图的类
    分布式缓存MemCache
  • 原文地址:https://www.cnblogs.com/zhang-da/p/11612142.html
Copyright © 2011-2022 走看看