7 檔案的基本操作

2022-07-11 10:48:12 字數 4169 閱讀 2490

1.檔案的開啟模式

w   write 寫入模式:只能寫入字串和位元組流      

檔案不存在則建立檔案,存在的話則開啟清空內容,並且將檔案指標放在檔案的開頭

r read 讀取模式

檔案不存在則報錯! 存在的話則開啟檔案,並且將檔案指標放在檔案的開頭

檔案不存在則建立檔案,存在的話則開啟檔案,並且將檔案指標放在檔案的末尾

x xor 異或模式(基本不用)

檔案已存在則報錯! 不存在的話則建立檔案,將檔案指標放在檔案的開頭

#擴充套件模式 (配合開啟模式的輔助模式,自己單獨不能使用)

+ plus 增強模式(可以讓檔案具有讀寫功能)

b bytes bytes模式(二進位制位元組流)

#模式一共16種

w,w+,wb,wb+

r,r+,rb,rb+

a,a+,ab,ab+

x,x+,xb,xb+

2.檔案的寫入讀取操作
格式:

fp = open(檔名,模式,字元編碼)#開啟檔案

fp.read() #讀取檔案

fp.write() #寫入檔案

fp.close() #關閉檔案

# 一.檔案的寫入操作

fp = open("lianxi.txt",mode="w",encoding="utf-8")

fp.write("把大象塞進去")

fp.close()

# 二.檔案的讀取操作

fp = open("lianxi.txt",mode="r",encoding="utf-8")

res = fp.read()

print(res)

fp.close()

3.位元組流
位元組流語法格式(前面加b) : b"123"

二進位制位元組流的應用場景: 在資料傳輸或者在資料儲存時,使用的一種資料格式;

多個字元放在一起叫做字串,多個位元組放在一起叫做位元組流

# 1.將字串和位元組流(bytes流)型別進行轉換 (引數寫成轉化的字元編碼格式)

"""encode() 編碼 將字串轉化為位元組流(bytes流)

decode() 解碼 將bytes流轉化為字串

"""strvar = b"123"

print(strvar , type(strvar)) # b'123' # 2. 中文不能在字串前面加b,必須是ascii編碼才能加:

#辦法: 把中文變成位元組流

# encode 編碼

strvar = "我愛你".encode("utf-8")

print(strvar)

# decode 解碼

res = strvar.decode("utf-8")

print(res)

# 3.寫入位元組流

"""mode = wb 代表寫入的是位元組流 , 不要指定任何編碼集 """

fp = open("lianxi2",mode="wb")

strvar = "愛上一匹野馬,家裡沒有草原"

fp.write(strvar.encode())#將字串轉化成位元組流,預設utf-8編碼

fp.close()

# 4.讀取位元組流

"""mode = rb 代表讀取的是位元組流 , 不要指定任何編碼集 """

fp = open("lianxi2",mode="rb")

res = fp.read()

fp.close()

print(res) #讀取的都是二進位制位元組流

print(res.decode()) #解碼位元組流

# 5.複製:先讀取位元組流,再寫入另乙個檔案中

# 開啟原檔案,讀取其中的位元組流

fp = open("集合.png",mode="rb")

res = fp.read()

fp.close()

print(res)

# 把這些位元組流寫入到另外檔案中

fp = open("集合2.gif",mode="wb")

fp.write(res)

fp.close()

4.檔案的擴充套件模式
"""

utf-8編碼格式下,預設乙個中文三個位元組,乙個英文或字元占用乙個位元組

read() :讀取游標右邊字元(引數)

引數:根據檔案開啟模式而產生變化,如果帶有b位元組流模式,讀取的是位元組的個數,否則讀取的是字元的個數

seek() :調整指標的位置(裡面的引數代表位元組個數)

seek(0) 把游標移動到檔案開頭

seek(0,2)把游標移動到檔案末尾

tell() :當前游標左側的所有位元組數

"""# with ...as 語法,可以省略掉close操作

# 1.r+先讀後寫

with open("1.txt",mode="r+",encoding="utf-8") as fp:

res=fp.read(2) #先讀,讀完游標跑到檔案末尾

print(res)

res=fp.tell() #計算檔案位元組數

print(res)

fp.write("abc") #寫入內容,游標跑到檔案末尾

fp.seek(0) #再讀需要調整游標位置

res=fp.read()

print(res)

# 2.a+和r+兩個模式的區別

"""a+模式下:寫入內容時,會強制把游標移動到檔案的末尾(seek()移動游標位置也不行)

r+模式下:寫入內容時,會隨著游標的位置改變而替換游標右邊的字元

"""# 3.重新整理緩衝區:flush

"""當檔案關閉的時候自動重新整理緩衝區;

當整個程式執行結束時自動重新整理緩衝區;

當緩衝區寫滿時,會自動重新整理緩衝區;

手動重新整理緩衝區:flush

"""

5.檔案相關函式
# 1.readable()    判斷檔案物件是否可讀

# 2.writable() 判斷檔案是否可寫

with open("1.txt",mode="r",encoding="utf-8")as fp:

res=fp.readable() #返回true

print(res)

res=fp.writable() #返回false

print(res)

# fp物件本身可以遍歷(迭代器)

"""遍歷時,按照一行一行讀取所有內容"""

# 3.readline() 讀取一行檔案內容

# (1)讀取讀取檔案所有行的資料:

with open("1.txt",mode="r",encoding="utf-8")as fp:

res=fp.readline()

while res:

print(res)

res=fp.readline()

# (2)readline(n) 讀取一行中n個字元個數

# 4.readlines() :將檔案中的內容按照換行讀取到列表當中

with open("1.txt",mode="r",encoding="utf-8")as fp:

lst=fp.readlines()

print(lst) #列表的字串中有沒用的符號

lstnew= #建立新列表

for i in lst: #遍歷檔案列表

res=i.strip() #去除雜質

print(lstnew)

# 5.writelines() 將元素是字串的可迭代性資料寫入檔案中

lst=["11111","22222","33333","44444"]

with open("2.txt",mode="w+",encoding="utf-8")as fp:

fp.writelines(lst)

fp.seek(0)

res=fp.read() #寫入的內容是連在一起的

print(res)

# 要使寫入的內容各行顯示,可以先在原字串後加上換行符(\n)

# 6.truncate() 將擷取的字串提取出來,然後清空內容,將提取的字串重新寫入檔案中

'''引數是數字,擷取的是位元組'''

28 檔案基本操作

計算機上面的檔案操作步驟 寫,將記憶體的內容寫入檔案 第三步,關閉檔案 那麼在python環境中呢?序號函式 方法 說明01 open python層面的方法 開啟檔案 02read 檔案內的方法 從cpu中讀取檔案,並且讀取全部檔案 03write 檔案內的方法 修改內容 04close 檔案內的...

7 檔案操作方法

執行python的三個步驟 1 啟動python直譯器 2 直譯器將test.py的內容從硬碟讀入記憶體 3 直譯器執行剛剛讀入記憶體的 識別python語法,比如 x 上 編碼 編碼 字元 unicode 其他編碼 解碼 解碼 字元 unicode 其他編碼 print x res x.encod...

python基礎7 檔案的操作

檔案的相關操作 什麼是檔案操作?重新命名,刪除檔案,新建資料夾,獲取當前目錄中的檔案等操作就是檔案操作 大前提 引入os模組 import os 常見操作 1.檔案重新命名 語法 os.rename 檔名 新的檔名 2 刪除檔案 語法 os.remove 檔名 3 建立資料夾 語法 os.mkdir...