• python3 文件操作练习 r+ w+ a+ 的理解


      突然来一句:“慨然有经略四方之志”

    文件操作三部曲:1.先用open打开 2.再写关闭  3.再回到中间写操作     为啥要刚打开就关闭 那是很容易望,所以先写上。。。

    基本格式 f = open("file_name", "r", encoding="utf-8")    都得有才标准呐 !

    f.read() 如果不写读几位,它会一直读下去 文件指针也就从头跟着下去,而且他是不会自己回来滴  所以要用f.seek()  把指针找回来并放到想去的位置。f.tell()是告诉指针当前的位置

    f.readline()是读一行  f.readlines() 是把文件全部读出来做个列表,然后把每一行作为列表的一个元素  list = f.readlines()   list[3]   就是第四行内容了  这种方法只适用于小文件,因为占内存啊

    想要读一个文件 但是不读某一行  一种很low的写法是:   for index, line in emunerate(f.readlines())     然后在里头搞个判断让他在指定行不输出就欧克了 占内存是真!

    一个逼格高点的,正常的写法是:  for line in f     然后直接操作就行,不过得加个count来自己计数 但这样不占内存啊,就一行

    “rb” 是以二进制读的方式打开   “wb"是以二进制写的方式打开    用于网络传输的  注意f.write("str".encode())  写的时候要编码encod()

    一下是一些操作练习,还是叫草稿把。。。。。。不过倒是把" r+" "w+" "a+"  搞明白了

     1 #!usr/bin/env/ python
     2 # -*- coding:utf-8 -*-
     3 # Author:XiaoFeng
     4 import time
     5 import sys
     6 
     7 # r+  读写 不重新创建 而是在源文件写
     8 # 要注意写的时候,文件指针的位置,
     9 # 不然可能覆盖原先部分内容
    10 f1 = open("test_file", "r+", encoding="utf-8")
    11 print(f1.tell())
    12 f1.write("哇哈哈哈哈哈!")
    13 print(f1.tell())
    14 f1.seek(0)
    15 print(f1.tell())
    16 date = f1.read()
    17 print(date)
    18 f1.write("测试")
    19 print(f1.tell())
    20 f1.close()
    21 
    22 print("-" * 50)
    23 
    24 # w+  写读  创建一个新的再写 就是在搞个这个名字的空文件,
    25 # 源文件没了 所以一开始读也是空的
    26 # 内容全部从头重新里面写,
    27 f2 = open("test_file1", "w+", encoding="utf-8")
    28 print(f2.tell())
    29 date1 = f2.read()
    30 print("----%s----" % date1)
    31 f2.write("哦哦哦哇哈哈哈哈哈!")
    32 print(f2.tell())
    33 f2.seek(0)
    34 print(f2.tell())
    35 date2 = f2.read()
    36 print("----%s----" % date2)
    37 print(f2.tell())
    38 f2.close()
    39 
    40 print("-" * 50)
    41 
    42 # a+ 追加读写  没有的话会新建一个文件
    43 # 若有文件 则在源文件基础上 在末尾追加内容
    44 # 欲使用seek改变指针位置从而改变写的位置是无效的
    45 # 只能加在最末尾
    46 f3 = open("test_file2", "a+", encoding="utf-8")
    47 print(f3.tell())
    48 date3 = f3.read()
    49 print("----%s----" % date3)
    50 f3.write("啊啊啊啊哦哦哦哇哈哈哈哈哈!")
    51 print(f3.tell())
    52 f3.seek(0)
    53 print(f3.tell())
    54 date4 = f3.read()
    55 print("----%s----" % date4)
    56 print(f3.tell())
    57 f3.seek(5)
    58 f3.write("测试测试")
    59 f3.seek(0)
    60 print(f3.read())
    61 f3.close()
    62 
    63 # 截断  即保留一段 剩下的全删
    64 # 注意这里seek改变指针位置也没作用 照样从头开始数
    65 f4 = open("test_file3", "w+", encoding="utf-8")
    66 print(f4.tell())
    67 f4.write("123456789")
    68 f4.seek(0)
    69 date = f4.read()
    70 print(date)
    71 f4.seek(2)
    72 f4.truncate(5)
    73 f4.seek(0)
    74 date5 = f4.read()
    75 print(date5)
    76 f4.close()
    77 
    78 print("-" * 50)
    79 
    80 # 做一个进度条
    81 for i in range(50):
    82     sys.stdout.write("#")   # sys.stdout.write() 标准输出内容 无空个回车
    83     sys.stdout.flush()      # f.flush()  刷新 立即存入硬盘
    84     time.sleep(0.1)         # sys.stdout.flush() 立即输出到屏幕
    85 
    86 print(f3.name)   # 打印名字 注意后面没括号
  • 相关阅读:
    01、MySQL_简介
    算法—打擂台法
    第10章 对文件的输入输出
    第9章 用户自己建立数据类型
    Spring Cloud
    JUC
    Swagger Learing
    JUC
    Spring Data
    SpringCloud
  • 原文地址:https://www.cnblogs.com/xf1262048067/p/10561997.html
Copyright © 2020-2023  润新知