python中檔案的讀和寫操作
阿新 • • 發佈:2018-11-23
一、開啟檔案
data = open("yesterday",encoding="utf-8").read()
# python預設的打字元編碼是unicode,處理不了gbk,但是utf—8可以
print(data)
ps:這邊的yesterday檔案是一首英文歌的歌詞
在開啟的時候,一定要轉碼,否則會亂碼:encoding="utf-8"
二、讀取前幾行
會用到read( )和readline( )方法
f = open("yesterday",encoding="utf-8") # 檔案控制代碼,方法和1類似 # data = f.read() # 游標在最後面 # print(data) # f.readline() # 讀取一行,只適合讀小檔案 for i in range(5): print(f.readline()) # 迴圈之後讀取四行
三、讀取前幾行(優化版)
用到了迭代器,所以不會像二一樣佔用太大的記憶體,最後只會佔用一行的記憶體
f = open("yesterday",encoding="utf-8")
# 實現前九行的輸入,並且在第九行輸入分割線
count = 0
for line in f:
if count == 9:
print("--------分割線-------")
count += 1
continue
print(line) # 迭代器!效率最高的迴圈方式,比2效率高是因為讀完一行就刪一行
count +=1
四、關於檔案的方法
python不是直接呼叫所有檔案,而是呼叫作業系統的介面I/O,通過介面來呼叫檔案
# 1.tell()方法:游標的位置 f = open("yesterday",encoding="utf-8") print("1:",f.tell()) # 把指標的位置表示出來,0 print("2:",f.readline()) print("3:",f.tell()) # 讀完一行字元之後游標的位置 print("4:",f.readline(3)) print("5:",f.tell()) # 讀完三行字元之後游標的位置 #2.seek()方法: 游標回到第幾行 f.seek(0) print("6:",f.tell()) # 游標重新回到了開始 # 3.encoding # 列印檔案的編碼型別 print("7:",f.encoding) # 4.fileno() 可用於底層作業系統的 I/O介面操作。 print("8:",f.fileno()) # 5.flush() print(f.flush()) # 實時重新整理檔案內容
其實在學習python基礎的時候,pycharm的聯想功能非常重要!
小福利:
開啟檔案的模式有:
r,只讀模式(預設)。
w,只寫模式。【不可讀;不存在則建立;存在則刪除內容;】
a,追加模式。【可讀; 不存在則建立;存在則只追加內容;】
“+” 表示可以同時讀寫某個檔案
r+,可讀寫檔案。【可讀;可寫;可追加】
w+,寫讀
a+,同a
"U"表示在讀取時,可以將 \r \n \r\n自動轉換成 \n (與 r 或 r+ 模式同使用)
rU
r+U
"b"表示處理二進位制檔案(如:FTP傳送上傳ISO映象檔案,linux可忽略,windows處理二進位制檔案時需標註)一般是在跨平臺的時候需要處理二進位制檔案,比如Windows到linux;視訊檔案也需要處理二進位制檔案
rb —讀,以二進位制模式開啟,此時不需要即encoding,
wb—寫,此時需要加入encoding
ab