老男孩Day8
今天是老男孩培訓的第8天,大致內容整理如下:
1.文件的操作:
1.文件路徑:文件路徑分為絕對路徑和相對路徑,絕對路徑指從根目錄到指定文件,詳細的路徑。相對路徑指你所在位置的同一位置的文件。
2.文件的編碼方式,字符串形式(str)居多
3.操作方式:只讀,只寫,追加,讀寫等等。。。
先建立一個文檔,內容為‘AAA’
f = open(‘a‘,mode=‘r‘,encoding=‘utf-8‘) content = f.read() print(content) f.close()
要註意的是,以什麽編碼形式存儲的文件,就要以什麽形式打開,否則就會亂碼,非文字類用‘rb’(byts)
只寫:w
f = open(‘a‘,mode=‘w‘,encoding=‘utf-8‘) f.write(‘BBB‘) f.close()
該操作將原有的文檔a清空然後寫入‘BBB‘註意會清空原有內容,如果沒有該文件則創建文件
byte也是用‘wb’
追加:
f = open(‘a‘,mode=‘a‘,encoding=‘utf-8‘) f.write(‘CCC‘) f.close()
該操作不會清楚原有內容,故為追加,bytes類型為ab
讀寫:
f = open(‘a‘,mode=‘r+‘,encoding=‘utf-8‘) print(f.read()) f.write(‘DDD‘) f.close()
f = open(‘a‘,mode=‘r+‘,encoding=‘utf-8‘) f.write(‘DDD‘) print(f.read()) f.close()
**這裏的意思是,在讀寫操作中先寫後讀也是存在的,但是先寫後讀會在光標處,也就是一開始加入你的字符,然後從光標出讀,也就是寫的內容不會讀。byts是r+b
寫讀:
f = open(‘a‘,mode=‘w+‘,encoding=‘utf-8‘) f.write(‘EEE‘) print(f.read()) f.close()
因為是w+所以依舊會先清空
常用方法:
.seek() 光標移動
f = open(‘a‘,mode=‘r‘,encoding=‘utf-8‘) f.seek(2) content = f.read() print(content) f.close()
文件中的是EEE,為什麽會讀出一個E呢?因為你用seek移動到了第二個字節處,再讀就是只有一個E
f = open(‘a‘,mode=‘r‘,encoding=‘utf-8‘) f.seek(3) content = f.read() print(content) f.close()
為什麽只少輸出一個呢?因為UTF-8中,一個中文3字節,而seek方法按字節移動,如果是2則會報錯。
.tell() 告訴你光標的位置
f = open(‘a‘,mode=‘r‘,encoding=‘utf-8‘) f.seek(3) content = f.tell() print(content) f.close()
因為seek是按字節,所以tell也是按照字節
.readtable()
是否可讀
.truncate()
截取一段去讀
.readline()
一行一行讀
.readlines()
每一行當成列表中的一個元素
在操作中也可以使用
with open () as 句柄
來代替原有的
= open()
.close()
編碼的補充:
bytes轉str
.decode()
老男孩Day8