1. 程式人生 > >18.07.11

18.07.11

繼續 制表符 encode 互聯 open utf-8 選擇 磁盤 類型

一,文件操作

在python中打開文件使用open()函數,獲取文件句柄,通過操作句柄來進行各種操作.

打開文件的方式有:r,w,a,r+,w+,a+,rb,wb,ab,r+b,w+b,a+b 默認使用的是r(只讀)模式.

常用操作:r,w,a,r+

1.只讀操作 r

例:

f=open("明星",mode=‘r‘,encoding=‘UTF-8‘)
s=f.read()
f.close()
print(s)==<周傑倫.郭采潔.容祖兒.鄧論>

encoding表示編碼集.根據文件的實際保存編碼進行獲取數據.

絕對路徑:(1)從磁盤的根目錄開始一直到文件名;(2)互聯網上的絕對路徑.

相對路徑:同一個文件下的文件,相對於當前這個程序所在的文件夾而言.如果在同一個文件夾中.則相對路徑就是這個文件名.如果在上一層文件夾.則要../("../"表示返回上層目錄)

read(n)讀取n個字符.需要註意的是.如果再次讀取.那麽會在當前位置繼續去讀而不是從頭讀.

2.只寫操作 w

寫的時候,如果沒有文件,則會創建文件;如果文件存在,則將文件中的原內容刪除,再寫入新內容.

例:

f=open("明星",mode=‘w‘,encoding=‘UTF-8‘)
s=f.write("昆淩")
f.flush()
f.close() 此時文件中的內容只有‘昆淩".

在w模式下不能進行讀"read"操作.

3.追加 a 寫入的內容會追加到文件的末尾

例:

f=open("明星",mode=‘a‘,encoding=‘UTF-8‘)
f.write("小龍女")
f.flush()
f.close() 此時文件中的內容是"昆淩小龍女"

4.只讀字節 rb 讀取出來的數據類型是byte類型,不能選擇encoding字符集.

例:

f=open("明星",mode=‘rb‘)
s=f.read()
print(s)
f.close() ==<b‘\xe6\x98\x86\xe5\x87\x8c\xe5\xb0\x8f\xe9\xbe\x99\xe5\xa5\xb3‘>

5.只寫字節 wb 可以不指定打開的文件的編碼,但在寫文件的時候必須將字符串轉化成"utf-8"的bytes數據.

例:

f=open("小娃娃",mode=‘wb‘)
f.write("你開心嗎?".encode("utf-8"))
f.flush()
f.close() 此時小娃娃文件內容"你開心嗎?"

6.讀寫 r+ 讀寫模式默認光標在文件開頭.必須先讀後寫

例:

f=open("小娃娃",mode=‘r+‘,encoding="utf-8")
s=f.read()
f.write("鄧超") 此時小娃娃內容只有"鄧超"
print(s) ==<你開心嗎?>
f.flush()
f.close()

在r+模式中,如果讀取了內容,不管讀取了多少.後面去寫都是追加在末尾.如果沒有讀取,就在開頭覆蓋.

7.寫讀 w+ 先將所有內容清空,然後寫入,最後讀取,但是讀取的內容是空的.必需在寫完後將光標移動到開頭的位置才能讀取到內容.

二.相關操作

1.seek()光標 移動到...位置 單位byte

例:

f=open("明星",mode=‘r+‘,encoding="utf-8")
f.read(3)
f.seek(3) --光標移動到第一個字的位置

seek(0)在開頭 seek(1)在當前 seek(2)在末尾

2.readable()判斷文件是否可讀

3.writable()判斷文件是否可寫

4.readlines()拿到列表元素是每行字和\n 可以執行for循環

5.strip去掉空格 換行 制表符

6.truncate()沒有參數時從文件截到光標當前位置 truncate(參數)從文件頭截到參數的位置.

三.文件內容修改

with.open打開文件夾不用寫close關閉文件夾

例:

import os
with open("菜單",mode="r",encoding="utf-8")as f1,\
open("菜單_副本",mode="w",encoding="utf-8")as f2:
s=f1.read()
ss=s.replace("肉","菜")
f2.write(ss)
os.remove("菜單") #刪除原菜單
os.rename("菜單_副本","菜單") #將菜單_副本重命名為菜單

例:

f=open("菜單",mode="r",encoding="utf-8")
for line in f:
print(line)
f.close
梅菜扣肉
兩個換行一個是文本中的換行,一個是print()中的換行.
紅燒肉

酸辣土豆絲

東坡肉

例:

import os
with open("菜單",mode="r",encoding="utf-8")as f1,\
open("菜單_副本",mode="w",encoding="utf-8")as f2:
for line in f1:
ss=line.replace("肉","菜")
f2.write(ss)
os.remove("菜單")
os.rename("菜單_副本","菜單")

18.07.11