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) # 打印名字 注意后面没括号