一. 讀文件python
過程:
打開文件json
讀文件內容ide
關閉文件函數
打開文件方式:編碼
open(path,flag,[encoding [ERRORS]])
path:要打開文件的路徑
flag :打開方式加密
* r 以只讀的方式打開文件 文件法人描述符放在開頭 spa
* rb 以二進制格式打開一個文件用於只讀 文件的描述符放在開頭 (二進制用來加密)3d
r+ 打開一個文件用於讀寫 文件的描述符放在開頭指針
* w 打開一個文件只用於寫入 若是該文件已經存在會覆蓋 若是不存在則建立新文件
* wb 打開一個文件只用於寫入二進制 若是該文件已經存在會覆蓋 若是不存在則建立新文件code
* w+ 打開一個文件用於讀寫
a 打開一個文件用於追加 若是文件存在 文件描述符將會放到文件末尾
a+
encoding 編碼格式 經常使用的的是utf-8
ERRORS 錯誤處理
# 打開文件
# 過程: # 打開文件 # 讀文件內容 # 關閉文件 # 打開文件 path=r"D:\Studypython\py2\01.txt" # 忽略錯誤 ignore # f=open(path,"r",encoding="utf-8",errors="ignore") f=open(path,"r",encoding="utf-8") # 讀文件內容 #讀取文件裏內容一整行 包括換行符 /n readline str1=f.readline() print(str1) # my name is 哈哈哈 # 關閉文件 path=r"E:\Studypython\py2\01.txt" # 忽略錯誤 ignore # f=open(path,"r",encoding="utf-8",errors="ignore") f=open(path,"r",encoding="utf-8") # 讀文件內容 讀取指定字符串 str1=f.readline(10) print(str1) # my name is 哈哈哈
# 打開文件 path=r"D:\Studypython\py2\01.txt" # 忽略錯誤 ignore # f=open(path,"r",encoding="utf-8",errors="ignore") f=open(path,"r",encoding="utf-8") # 讀文件內容 # 讀取文件裏面10個字符 read(10) # 讀取文件裏指定字符數read(n) str1=f.read(10) print(str1) # my name is # 關閉文件
# 打開文件 path=r"D:\Studypython\py2\1\01.txt" # 忽略錯誤 ignore # f=open(path,"r",encoding="utf-8",errors="ignore") f=open(path,"r",encoding="utf-8") # 讀文件內容 # 讀取文件裏的全部內容 read() str1=f.read() print(str1) # my name is 哈哈哈 # i lover you to # 哈哈哈哈啦啦啦 # 關閉文件
path=r"D:\Studypython\py2\01.txt" # 忽略錯誤 ignore # f=open(path,"r",encoding="utf-8",errors="ignore") f=open(path,"r",encoding="utf-8") # 讀文件內容 # 讀取文件裏面10個字符 read(10) # 讀取文件裏指定字符數read(n) str1=f.read(10) print(str1) # my name is # 關閉文件
path=r"D:\Studypython\py2\01.txt" # 忽略錯誤 ignore # f=open(path,"r",encoding="utf-8",errors="ignore") f=open(path,"r",encoding="utf-8") # 讀文件內容 #讀取文件裏內容一整行 包括換行符 /n readline str1=f.readline() print(str1) # my name is 哈哈哈 # 關閉文件
path=r"E:\Studypython\py2\01.txt" # 忽略錯誤 ignore # f=open(path,"r",encoding="utf-8",errors="ignore") f=open(path,"r",encoding="utf-8") # 讀文件內容 讀取指定字符串 str1=f.readline(10) print(str1) # my name is 哈哈哈
path=r"D:\Studypython\py2\01.txt" # 忽略錯誤 ignore # f=open(path,"r",encoding="utf-8",errors="ignore") f=open(path,"r",encoding="utf-8") # 讀文件內容 #讀取文件裏內容 全部行 並返回列表 readlines str1=f.readlines() print(str1) # my name is 哈哈哈 #['my name is 哈哈哈\n', '\n', 'i lover you to\n', '\n', '哈哈哈哈啦啦啦'] # 關閉文件
path=r"D:\Studypython\py2\01.txt" # 忽略錯誤 ignore # f=open(path,"r",encoding="utf-8",errors="ignore") f=open(path,"r",encoding="utf-8") # 讀文件內容 # 若給定的數字大於0 返回實際size節的行數 str1=f.readlines(25) print(str1) # ['my name is 哈哈哈\n', '\n', 'i lover you to\n'] # 關閉文件 f.close()
fileObject.seek(offset[, whence])
參數
offset -- 開始的偏移量,也就是表明須要移動偏移的字節數
whence:可選,默認值爲 0。給offset參數一個定義,表示要從哪一個位置開始偏移;0表明從文件開頭開始算起,1表明從當前位置開始算起,2表明從文件末尾算起。
返回值
path=r"D:\Studypython\py2\01.txt" # 忽略錯誤 ignore # f=open(path,"r",encoding="utf-8",errors="ignore") f=open(path,"r",encoding="utf-8") # 讀文件內容 # 修改描述符的位置 # seek (str) 表示從第字符開始文件內容 # seek() 方法用於移動文件讀取指針到指定位置。 f.seek(10) str1=f.read() print(str1) # 哈哈哈 # i lover you to # 哈哈哈哈啦啦啦 # 關閉文件 f.close()
# 打開文件讀文件的一個完整的過程 方法一
path=r"E:\Studypython\py2\1\01.txt" try: f=open(path,"r",encoding="utf-8") str1=f.read() print(str1) finally: if f: f.close() # my name is 哈哈哈 # i lover you to # 哈哈哈哈啦啦啦 # 關閉文件
# 打開文件讀文件的一個完整的過程 方法二
# 打開文件讀文件的一個完整的過程 方法二 path=r"E:\Studypython\py2\1\01.txt" with open(path,"r",encoding="utf-8") as f2: print(f2.read()) # my name is 哈哈哈 # i lover you to # 哈哈哈哈啦啦啦
二. 寫文件
寫文件
path=r"E:\Studypython\py2\1\02.txt" f=open(path,"w",encoding="utf-8") # 1 將信息寫入緩衝區 f.write("my name is hao do you do") # 2 刷新緩衝區 # 直接把內部緩衝區的數據馬上寫入文件, 而不是被動的等待 自動刷入緩衝區 f.flush() while True: pass f.close()
# 寫文件1 import time path=r"E:\Studypython\py2\1\03.txt" f=open(path,"w",encoding="utf-8") # 1 將信息寫入緩衝區 # 2 刷新緩衝區 # 直接把內部緩衝區的數據馬上寫入文件, 而不是被動的等待 自動刷入緩衝區 # f.flush() while 1: f.write("my name is hao do you doLLLLLLLLLLLLLLLLLLLLLLLLLLLL") f.flush() time.sleep(0.1) f.close()
# 寫文件 import time # 簡易寫法 寫文件 # 這種寫法不用關閉和刷新 path=r"D:\Studypython\py2\1\04.txt" with open(path,"a",encoding="utf-8")as f2: f2.write("哈哈哈哈哈啊哈哈哈哈啊哈哈哈哈哈哈哈哈")
寫文件二進制編碼和解碼
path=r"D:\Studypython\py2\1\05.txt" # 注意編碼和解碼的字符集要一致 # 寫入文件編碼 with open(path,"wb")as f2: str="my name is haha heee1s 張三丰" f2.write(str.encode("utf-8")) # 讀文件解碼 with open(path,"rb") as f3: data=f3.read() print(data) # b'my name is haha heee1s' 帶b的二進制 print(type(data)) # <class 'bytes'> 字節類型 newData=data.decode("utf-8") print(newData)
import pickle #數據持久性模塊
import pickle #數據持久性模塊 # 寫入文件 path=r"E:\Studypython\py2\2\01.txt" mylist=[1,2,3,4,5,6,"sumk is a good man fffffffffffffffffffffffffffffffffffffffffffff"] f=open(path,"wb") pickle.dump(mylist,f) f.close() # 用於序列化的兩個模塊 # json:用於字符串和Python數據類型間進行轉換 # pickle: 用於python特有的類型和python的數據類型間進行轉換 # json提供四個功能:dumps,dump,loads,load # pickle提供四個功能:dumps,dump,loads,load # pickle能夠存儲什麼類型的數據呢? # 全部python支持的原生類型:布爾值,整數,浮點數,複數,字符串,字節,None。 # 由任何原生類型組成的列表,元組,字典和集合。 # 函數,類,類的實例 # 讀取文件 f2=open(path,"rb") timelist=pickle.load(f2) print(timelist) f2.close() # [1, 2, 3, 4, 5, 6, 'sumk is a good man fffffffffffffffffffffffffffffffffffffffffffff']