1. 程式人生 > >小學生都能學會的python(文件操作)

小學生都能學會的python(文件操作)

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(文件操作)