# !/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hugolinhj
''' 對文件的操作流程 1、打開文件、得到文件句柄并賦值給一個變量 2、通過句柄對文件進行操作 3、關(guān)閉文件 ''' ''' data = open('yesterday',encoding='utf-8').read() #是指將內(nèi)存復制到變量來修改,無意義,正常格式應(yīng)該為以下 #windows默認編碼格式是GBK,py是utf-8,要用encoding指定'utf-8’打開。 f = open('yesterday','r',encoding='utf-8') data = f.read() data2 = f.read() data2 = f.read() print(data) print('data2 ===>',data2) #這里不打因data2不是沒有打印,而是文件的所讀光標已經(jīng)指到文件底部,沒能在指會文件首部。
w = open('yesterday2','w',encoding='utf-8')#文件句柄,就是該文件的內(nèi)存對象。包含文件名、字符集、大小、描述。規(guī)范:加'r'默認不加為讀模式。注?。。。骸痺'直接創(chuàng)建空白文件。 w.write('wo ai BeiJingTianAna\n') w.write('wo ai wulingmin') print(w)
a = open('yesterday3','a',encoding='utf-8')# 加'a'是append,追加的意思,不能讀。 a.write('wo ai BeiJingTianAna\n') a.write('wo ai wulingmin\n') print(a)
a.close() #關(guān)閉文件 w.close() f.close()
f = open('yesterday','r',encoding='utf-8') for i in range(5): print(f.readline()) #讀一行,用for 語句讀5行
f = open('yesterday','r',encoding='utf-8') for index,line in enumerate(f.readlines()):#找下標 index。 if index == 1: print('------------------') continue # 不操作,重新判斷。 elif index == 11: print('==================') break #退出循環(huán)。 print(line.strip()) #打印文件中跳過第2行以及到第12行退出。 #注:readlines只能讀小文件,不建議讀大文件,因為是直接全部讀取到內(nèi)存中,占內(nèi)存大。
#當想打印文件中的行數(shù),建議采用以下方式: #標準: f = open('yesterday','r',encoding='utf-8') count = 0 for line in f: #這種是一行一行讀取到內(nèi)存,并一行一行從內(nèi)存中刪除。 使f變成迭代器。 if count == 9: print('++++++++++++') count += 1 continue else:print(line) count +=1 #打印文件’yesterday',其中第10行,不打印。 f.close()
'''
f = open('yesterday','r',encoding='utf-8') print(f.tell()) #打印當前文件所打印的指針。 print(f.read(5)) #打印當前文件的前5個字符。’Yeste' print(f.readline()) #打印當前文件的一行?!痳day, all my troubles seemed so far away' print(f.tell()) #打印當前文件所打印的指針。 f.seek(0) #將指針指回0。 print(f.readline()) #打印當前文件的一行。#’Yesterday, all my troubles seemed so far away'
print(f.encoding) #打印文件字符編碼
print(f.fileno()) #打印操作系統(tǒng)內(nèi)部接口的去讀文件的編號。
print(f.name) #打印文件名
print(f.seekable()) #判斷文件是否為可移動指針。 原因:文件不能移動指針,如:終端、驅(qū)動等,因為在linux中一切皆為文件,但驅(qū)動文件等是無法移動指針的。
print(f.writable()) #判斷文件是否可讀。
print(f.flush()) #因為存硬盤前,會先讓內(nèi)存存到緩存,緩存滿了后再放入硬盤。flush是及時放入硬盤。 #例: import sys, time for i in range(50): sys.stdout.write("#") # sys.stdout 打印不換行。 sys.stdout.flush() # 及時打印。不放緩存條。 time.sleep(0.05)
print(f.closed) #判斷文件是否被關(guān)閉。
f = open('yesterday2','a',encoding='utf-8') print(f.truncate(10)) #截斷文件'yesterday2’10個字符。
f = open('yesterday','r+',encoding='utf-8')#'r+'可讀,和追加。讀寫 print(f.readline()) print(f.readline()) print(f.readline()) print(f.tell())#打印光標 f.write('----------diao-----------') #追加是文件的最后。 print(f.readline()) #
f = open('yesterday','w+',encoding='utf-8') #'r+'可讀,和追加。寫讀,會先創(chuàng)建一個文件,沒什么用 f.write('----------diao-----------') #追加是文件的最后。 f.seek(10) f.write('----------diao-----------') #追加是文件的最后。
f = open('yesterday','rb') #rb是指二進制文件。二進制不能傳encoding傳輸。當網(wǎng)絡(luò)傳輸時用二進制。 print(f.readline())
f = open('yesterday','wb') #rb是指二進制文件。二進制不能傳encoding傳輸。當網(wǎng)絡(luò)傳輸時用二進制。二進制寫 f.write('hello binary\n'.encode())
|