突然來一句:“慨然有經略四方之志”
文件操作三部曲: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) # 打印名字 注意后面沒括號