對檔案操作流程:
1.開啟檔案,得到檔案控制代碼並賦值給乙個變數
2.通過控制代碼對檔案進行操作
3.關閉檔案
建立乙個名為lyrics的txt檔案在目錄下
f = open('lyrics','r',encoding="utf-8") #開啟檔案,f為檔案控制代碼,r為讀模式first_line = f.readline()
print("first line:",first_line) #讀檔案的第一行,檔案太大時建議循壞方式讀取內容
print('我是分割線'.center(50,'-')) #建立一條分割線
data = f.read() #讀取完整的檔案,檔案太大時不要使用
print(data) #列印檔案
f.close() #關閉檔案
注意檔案是utf-8儲存的,開啟檔案時open函式通過作業系統開啟檔案,而我所在的win7作業系統預設使用gbk編碼,因為不能直接開啟,需要加上encoding="utf-8"
開啟檔案的模式有:
"+" 表示可以同時讀寫某個檔案
"u"表示在讀取時,可以將 \r \n \r\n自動轉換成 \n (與 r 或 r+ 模式同使用)
"b"表示處理二進位制檔案(如:ftp傳送上傳iso映象檔案,linux可忽略,windows處理二進位制檔案時需標註)
迴圈讀取檔案:
readline 讀取整行文字
readlines 讀取所有行
讀取列印n行資料
for i in range(n):print(f.readline)
讀取列印整份檔案:
只適合讀小記憶體檔案
for line in f.readlines(): #每迴圈一次(列印一行),line等於乙個元素print(line.strip()) #列印每行,strip()函式:去掉換行符和空格
讀取到第九行插入「分割線」:
for index,line in enumerate(f.readlines()):if index == 9:
print('我是分割線'.center(50,'-'))
continue
print(line.strip())
一行行讀取檔案,記憶體裡面只儲存一行文字
可適用大檔案,效率更高!推薦!
for line in f: #f已經變成了乙個迭代器print(line)
讀取到第九行插入「分割線」:
#自己新增計數器count = 0
for line in f:
if count == 9:
print('我是分割線'.center(50, '-'))
print(line)
count += 1
檔案修改:
兩種方式
1.把檔案全部載入到記憶體物件,像vim一樣,修改完後寫到原檔案(不可取)
2.開啟乙個檔案,修改完寫入乙個新檔案裡面
如下:
f= open("lyrics","r",encoding="utf-8")f_new= open("new-lyrics.bak",'w',encoding="utf-8")
for line in f:
if"原文內容哈哈哈" in line:
line = line.replace("原文內容哈哈哈","更改內容嘿嘿嘿")
f_new.write(line)
f.close()
f_new.close()
with語句
為了避免忘記開啟檔案,可以用with
with open("lyrics","r", encoding="utf-8") as f:for line in f:
print(line)
#不用執行關閉檔案操作
當with **塊執行完畢後,內部會自動關閉並釋放檔案資源
day 03檔案操作模式
r open db r f.close r讀出來的是字串 rb讀出來的是位元組 w open db wb w.write bytes 中國 encoding utf 8 w.close r w a x 二進位制的是 r bx b w ba b f open db r encoding utf 8 d...
python基礎程式設計day03
從來記錄文字資訊 表示方法 空字串的表示方式 非空字串的表示方式 hello hello hello hello 單引號雙引號的區別 單引號內部的雙引號不算結束符 雙引號內部的單引號不算結束符 三引號字串 作用 三引號內可以包括單引號和雙引號 三引號字串中的換行符會自動換成 n 轉義序列代表特殊的字...
day03 前端基礎
transform translate x,y x 表示向x軸正方向移動的距離 x表示向x軸反方向移動的距離 y 表示向y軸正方向移動 這裡的y軸正方向指的向下移動 y表示向y軸反方向 延y軸向上移動!示例 transform translate 300px,0px transform transl...