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

 

posted @ 2019-03-19 22:36  晓风小峰  阅读(2046)  评论(0编辑  收藏  举报