third day- 01--文件操作
生活随笔
收集整理的這篇文章主要介紹了
third day- 01--文件操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 1、請分別介紹文件操作中不同的打開方式之間的區別:
2
3 模式 含義
4 r 文本只讀模式
5 rb 二進制模式 #這種方法,是用來傳輸或存儲,不給人看的。
6 r+ r+ 是讀寫模式,只要沾上r,文件必須存在
7 rb+ 二進制讀寫模式
8 w w 寫模式,它是不能讀的,如果用w模式打開一個已經存在的文件,會清空以前的文件內容,重新寫
9 wb 和wb 兩種模式
10 w+ w+ 是讀寫內容,只要沾上w,肯定會清空原來的文件
11 wb+ 二進制寫讀模式
12 a a 追加模式,也能寫,在文件的末尾添加內容
13 ab 二進制追 加模式
14 a+
15 ab+
16 ''' 從別處拷貝
?
?
1.文件操作基本流程
#1. 打開文件,得到文件句柄并賦值給一個變量 f=open('a.txt','r',encoding='utf-8') #默認打開模式就為r#2. 通過句柄對文件進行操作 data=f.read()#3. 關閉文件 f.close() 護士主婦空姐老師聯系方式.txt1,文件路徑2,編碼方式:utf-8。3,動作mode,讀,讀寫,寫讀.....f1 = open('D:\空姐護士老師主婦.txt', encoding='utf-8', mode='r')content = f1.read()print(content)f1,文件句柄,文件對象,file,f_handle,file_handle,f_objopen打開的指令,windows的指令,windows 默認編碼方式gbk,linux默認編碼方式utf-8,mac utf-8。1,打開文件,產生文件句柄。2,操作文件句柄。3,關閉文件。 注意:SyntaxError: (unicode error) 'unicodeescape' codeccan't decode bytes in position 2-3: truncated \UXXXXXXXX escapef1 = open(r'D:\空姐護士老師主婦.txt', encoding='utf-8', mode='r')# f1 = open('D:\\空姐護士老師主婦.txt', encoding='utf-8', mode='r')EncodeDecodeErorr: 編碼錯誤。 View Code調用文件的兩個小例子
#相對路徑下,不用寫路徑,可以直接寫文件名 # f1=open('123.py',encoding='utf-8',mode='r') #mode可以不寫,默認讀 # content=f1.read() #read全部讀出 # print(content) # f1.close() #絕對路徑下 # f1=open('F:\\Python自動化21期\\day03\\1.txt',encoding='utf-8') #注意路徑是\\,否則會報錯 # content=f1.read() # print(content) # f1.close() View Code2.文件打開模式
文件句柄 = open(‘文件路徑’,‘模式’)
rb模式 非文字類的文件的操作。不寫encodingunicode ---> bytes encode()
bytes---> unicode decode()
3.文件操作
read(3):1. 文件打開方式為文本模式時,代表讀取3個字符2. 文件打開方式為b模式時,代表讀取3個字節其余的文件內光標移動都是以字節為單位的如:seek,tell,truncate注意:1. seek有三種移動方式0,1,2,其中1和2必須在b模式下進行,但無論哪種模式,都是以bytes為單位移動的2. truncate是截斷文件,所以文件的打開方式必須可寫,但是不能用w或w+等方式打開,因為那樣直接清空文件了,所以truncate要在r+或a或a+等模式下測試效果。 View Code?
1.read 全部讀取
read(n) 按照字符讀取
readline()按行讀取
readlines() 將每一行作為列表的一個元素并返回這個列表
for循環
# read 全部讀出 # f1 = open('log1', encoding='utf-8') # content = f1.read() # # print(content) # f1.close()#read(n) # f1 = open('log1', encoding='utf-8') # content = f1.read(5) # r 模式 按照字符讀取。 # print(content) # f1.close()# f1 = open('log1', mode='rb') # content = f1.read(3) # rb模式 按照字節讀取。utf-8編碼,寫4會報錯 # print(content.decode('utf-8')) # f1.close()#readline()按行讀取 # f1 = open('log1', encoding='utf-8') # print(f1.readline()) # print(f1.readline()) # print(f1.readline()) # print(f1.readline()) # f1.close()#readlines() 將每一行作為列表的一個元素并返回這個列表 # f1 = open('log1', encoding='utf-8') # print(f1.readlines()) # f1.close()#for循環 最好只占一行空間,直接read占用內存 # f1 = open('log1', encoding='utf-8') # for i in f1: # print(i) # f1.close() View Code#r+ 讀寫
#w模式 覆蓋之前的內容重新寫入輸入的內容 w+寫讀模式 清空之前內容寫入 a 追加寫 1 # r+讀寫 2 # f1=open('123.py',encoding='utf-8',mode='r+') 3 # print(f1.read()) 4 # f1.write('666') #在文件的最后一行后面寫入了666 5 # f1.close() 6 7 # f1=open('123.py',encoding='utf-8',mode='r+') 8 # f1.seek(0,2) #調至最后,按照字節去調整光標 9 # f1.write('777') 10 # f1.seek(0) #調整光標 不寫打印出內容為空! 11 # print(f1.read()) 12 # #光標 按照字節去運轉 seek 13 # f1.close() 14 15 #w模式 覆蓋之前的內容重新寫入輸入的內容 16 #w和wb區別????于非文本文件,我們只能使用b模式 17 # f1=open('123.py',encoding='utf-8',mode='w') 18 # f1.write('你真美,,') 19 # f1.close() 20 # f1=open('123.py',mode='wb') 21 # f1.write('1234567q釋放'.encode('utf-8')) 22 # f1.close() 23 24 # # w+寫讀模式 清空之前內容寫入 25 # f1=open('123.py',encoding='utf-8',mode='w+') 26 # print(f1.read()) #清空之前內容 27 # f1.write('666') #寫入 28 # f1.seek(0) #展示寫入的內容,加這兩行 29 # print(f1.read()) #展示寫入的內容,加這兩行 30 # f1.close() 31 32 #a 追加寫 ab 33 # f1=open('123.py',encoding='utf-8',mode='a') 34 # f1.write('1234') 35 # f1.close() 36 # ab????于非文本文件,我們只能使用b模式 37 #a+ 可以讀取 38 # f1=open('123.py',encoding='utf-8',mode='a') 39 # f1.write('lijie') 40 # f1.seek(0) 41 # print(f1.read()) 42 # f1.close() View Code2.其它操作方法
1 #其他操作方法: 2 #read read(n) readline() readlines() write() close 3 # readable??是否可讀 4 # writable??是否可寫 5 #tell 告訴指針的位置 6 # f1=open('123.py',encoding='utf-8',mode='w') 7 # f1.write('你真美1') 8 # print(f1.tell()) 9 # f1.close() 10 #seek(參數),seek(0,2) 調至最后 按照字節去調整光標 11 12 # 不手動關閉文件方法 with open() as: 13 # with open ('123.py',encoding='utf-8',mode='r') as f1,\ 14 # open ('2.py',encoding='utf-8',mode='w') as f2: #文件不存在時自動創建 15 # print(f1.read()) 16 # f2.write('234') View Code4.文件的改
1 #文件的改 2 #1,打開原文件,產生文件句柄。 3 #2,創建新文件,產生文件句柄。 4 #3,讀取原文件,進行修改,寫入新文件。 5 #4,將原文件刪除。 6 #5,新文件重命名原文件。 7 8 # import os 9 # with open('file_test', encoding='utf-8') as f1,\ 10 # open('file_test.bak', encoding='utf-8', mode='w') as f2: 11 # old_content = f1.read()#此方法全部讀取,不好 12 # new_content = old_content.replace('alex','SB') 13 # f2.write(new_content) 14 # os.remove('file_test') 15 # os.rename('file_test.bak','file_test') 16 17 18 import os 19 with open('file_test', encoding='utf-8') as f1,\ 20 open('file_test.bak', encoding='utf-8', mode='w') as f2: 21 for line in f1: #for循環未結束一直在持續寫,所以不覆蓋 22 new_line = line.replace('SB','alex') 23 f2.write(new_line) 24 os.remove('file_test') 25 os.rename('file_test.bak','file_test') 文件的改?5.復習
1 # 文件操作 2 # 打開文件 3 # f = open('文件路徑') 默認的打開方式r ,默認的打開編碼是操作系統的默認編碼 4 # r w a (r+ w+ a+) 以上6種加b ,如果打開模式+b,就不需要指定編碼了 5 # 編碼 UTF-8 ,gbk 6 # 操作文件 7 # 讀 8 # read 不傳參數 意味著讀所有 9 # 傳參,如果是r方式打開的,參數指的是讀多少個字符 10 # 傳參,如果是rb方式打開的,參數指的是讀多少個字節 11 # readline 12 # 一行一行讀 每次只讀一行,不會自動停止 13 # for循環的方式 14 # 一行一行讀 從第一行開始 每次讀一行 讀到沒有之后就停止 15 # 寫 16 # write 寫內容 17 # 關閉文件 18 # f.close() 19 # with open() as f: 20 # 修改文件 : 21 # import os 22 # os.remove 23 # os.rename View Code?
轉載于:https://www.cnblogs.com/lijie123/p/8856840.html
總結
以上是生活随笔為你收集整理的third day- 01--文件操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入React事件系统(React点击空
- 下一篇: solr 配置