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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM