python中文件的操做

文件操做函數

open(文件名(或者路徑)),mode="模式",encoding="字符集")

close(),每打開一個文件記得要關閉,不然刪不掉

flush(),刷新,寫,追加後要刷新

f = open("文件名或路徑", mode="模式", encoding="UTF-8")
s = f.read()
f.close
with open("文件名", mode="模式", encoding="utf-8") as f:#比較友好,能夠不關閉文件,它自動刷新和關閉文件

 

路徑

絕對路徑:從磁盤的根目錄尋找 或者 從互聯網上尋找一個路徑python

相對路徑:(用的多). 相對於當前程序所在的文件夾 ../上一層文件夾app

經常使用操做

r:讀

f = open("哈哈哈哈哈", mode="r", encoding="UTF-8")
 s = f.read()
 print(s)
 f.close() # 若是沒有這句話, 你在下面的程序中若是刪除這個文件. 就會報錯
for line in f:  # 文件是一個可迭代對象
    print(line.strip()) # 一行一行的處理數據
lst = f.readlines()
print(lst)
f.close()

 

w:寫

#帶w的. 只要你操做了. 就會清空源文件
#若是文件不存在. 會自動建立文件
f = open("阿西吧", mode="w", encoding="utf-8")
f.write("呀! 養狗了沒有?\n")
f.write("養狗四米大")
f.flush()
f.close()

 

a:追加

# 寫的時候. 換行須要手動控制換行   \n
 f = open("阿西吧", mode="a", encoding="utf-8")
 f.write("四米大?")
 f.write("四米大")
 f.flush()
 f.close()

 

r+:讀寫

#r+ 先讀後寫
f = open("阿西吧", mode="r+", encoding="utf-8")
s = f.read(3) # 讀取三個字符
print(s)
f.write("不養了. 送人") # 在末尾寫

f.write("葫蘆娃")
s = f.read()
print(s)
s = f.read(2)
print(s)
f.write("還有何雲偉")
f.close()

 

w+:寫讀

# w+,先寫後讀,不多用. 由於會清空文件中的內容
f = open("阿西吧", mode="w+", encoding="utf-8")
f.write("張雲雷也要退出德雲社") # 寫完以後光標在最後. 讀取是沒有內容的
f.seek(0) # 移動光標, 移動到開頭
s = f.read()
print("讀取的內容是",s)
f.flush()
f.close()

 

a+:追加讀寫

f = open("阿西吧", mode="a+", encoding="utf-8")
f.write("我要加入德雲社")#清空源文件內容,寫入"我要加入德雲社"
f.seek(0)                   #移動光標到開頭,緣由:寫入完畢,光標停留在寫完最後的位置
s = f.read()         #不移動光標什麼都讀不出來
print(s)            #我要加入德雲社
f.flush()
f.close()                            

rb, wb, ab, r+b, w+b, a+b:非文本文件的讀,寫,追加,讀寫,寫讀,追加讀寫(b在這裏表明bytes)

rb, wb, ab, bytes#若是處理的是非文本文件, mode裏若是有b. encoding就不能給了
f = open("c:/pdd.jpg", mode="rb") # 這裏不能寫encoding
e = open("e:/pdd.jpg", mode="wb")
for line in f: # 從c盤讀取 line你是不知道讀取了多少數據的
e.write(line)   # 寫入到e盤
f.close()
e.flush()
e.close()

經常使用操做

seek(偏移量, 位置)函數

光標(seek)*spa

seek(0) 光標移動到開頭日誌

seek(0,2) 光標移動到結尾code

seek(0,1)當前光標對象

tell() 告訴光標的位置blog

truncate截斷文件

1.從文件開頭截斷到光標位置ip

2.若是給參數. 從頭截斷到參數位置utf-8

文件的修改

步驟:

   1. 引入os模塊

        2. 打開目標文件, r

        3. 打開文件副本, w

        4. 從r中讀取內容進行修改. 寫入到副本中

        5. 刪除源文件

        6. 重命名副本

#將原文件中的'alex'換成'很屌'
import os #引入模塊
# with open('a1.txt',mode='r',encoding='utf-8') as f, \
#     open('a1副本.txt',mode='w',encoding='utf-8') as f1:
#     for line in f:
#         line = line.replace("alex", "很屌")
#         f1.write(line)
# os.remove("a1.txt") #刪除原文本
# os.rename("a1副本.txt","a1.txt") #將新文本重命名爲原文件名
#示例,日誌的終極處理方法
import os # 引入模塊
lst = []
with open("2018-08-06.log", mode="r", encoding="utf-8") as f:  #這種寫法比較友好,不用打close()
    first = f.readline().strip().split(",")       #去除空白,分割','造成列表
    for line in f:                        #循環文件,循環的結果是每一行
        #dic = {} # 每一行一個字典
        # 1,alex,10086,特斯拉
        ls = line.strip().split(",")    #每一行都去除空格,以','分割,造成列表
        for i in range(len(first)):    #無論源文件如何增長內容,這裏每次均可以循環到,能夠添加到字典中
            dic[first[i]] = ls[i]        #比原來更方便
        lst.append(dic)
print(lst)                                        
相關文章
相關標籤/搜索