小學生都能學會的python(文件操作)
阿新 • • 發佈:2018-09-18
print 路徑 adl byte import with open 讀取內容 操作 res
小學生都能學會的python(文件操作)
1. open("文件路徑", mode="模式", encoding="編碼")
文件的路徑:
1. 絕對路徑:
1. 從磁盤根目錄尋找
2. 網絡上的路徑
2. 相對路徑
相對於當前你這個程序所在的文件夾.(用的最多的)
模式
r 讀. 只讀模式
w 寫 只能寫
f = open("d:/sylar.txt", mode="w", encoding="utf-8") f.write("周筆暢\n") # 寫的時候. 先清空. 再寫入. w f.write("胡辣湯\n") f.write("實付款\n") f.flush() f.close()
a 追加寫, 只能寫入
f = open("d:/sylar.txt", mode="a", encoding="utf-8") f.write("娃哈哈") # 追加寫 f.write("爽歪歪") f.flush() f.close()
b: bytes 這個時候處理文件的是字節
操作非文本文件的時候用帶b的
rb
wb
ab
r+ 讀寫模式
f = open("菜單", mode="r+", encoding="utf-8") # r+最常見 s = f.read(1) # 讀取一個字符 print(s) f.write("胡辣湯") # r+模式. 如果你執行讀了操作. 那麽寫操作的時候. 都是寫在文件的末尾. 和光標沒有關系 # f.write("ab") # 在文件開頭寫入. 寫入的是字節,把原來的內容蓋上 # for line in f: # print(line) # f.write("蛋炒飯") # 正確用法: 先讀後寫 f.close()
w+ 寫讀模式
f = open("菜單", mode="w+", encoding="utf-8") # 很少用. f.write("疙瘩湯") f.seek(0) # 移動到開頭 content = f.read() print("讀取的內容是", content) f.flush() f.close()
a+ 追加讀模式
f = open("菜單", mode="a+", encoding="utf-8") f.write("韭菜雞蛋餃子") f.seek(0) content = f.read() print(content)
r+b
w+b
a+b
光標:
移動到開頭: seek(0)
移動到末尾: seek(0, 2)
f = open("菜單", mode="a+", encoding="utf-8") # r+ a+ w+ # f.write("我要多寫一點內容. 然後爭取能看到效果") # f.seek(0) # print(f.read()) # f.seek(0) # f.write("你") # # f.seek(0) # print(f.read(1)) # f.seek(0) # f.write("大米飯") # f.write("大米粥") # print(f.tell()) # f.seek(3) # 字節 # print(f.read(1)) # # print(f.read(1)) # 字符 # # print(f.read(1)) # 字符 # print(f.tell()) #字節 # 使用tell()可以知道光標在哪裏 # seek()可以移動光標 # 讀寫的時候. 單位 字符 # 光標: 單位是字節 # 光標移動到末尾: seek(0,2) # seek(偏移量, 位置) # 位置: 0開頭, 1當前位置, 2末尾 # 移動到末尾: seek(0, 2)
文件的修改:
1. 從源文件中讀取內容. 修改內容. 寫入到文件副本中.
2. 刪除源文件. 重命名文件副本為源文件的名字
with open(..) as f
f = open("我的天吶", mode="r+", encoding="utf-8") f.seek(9) f.truncate(12) # 如果沒有參數. 按照光標來階段. 如果有參數. 截斷到參數位置 f.flush() f.close()
關於修改文件
import os # 引入os模塊 with open("alex", mode="r", encoding="utf-8") as f1, open("alex_副本", mode="w", encoding="utf-8") as f2: for line in f1: new_line = line.replace("good", "sb") f2.write(new_line) os.remove("alex") os.rename("alex_副本", "alex")
企業中日誌處理
result = [] with open("2018-09-12.log", mode="r", encoding="utf-8") as f: hang = f.readline() title = hang.split("|") for line in f: line = line.strip() # 去掉空白, 2018-09-11 00:00:01|劉偉|吃雞 lst = line.split("|") dic = {title[0]: lst[0], title[1]: lst[1], title[2]: lst[2]} result.append(dic) print(result)
小學生都能學會的python(文件操作)