檔案的相關操作
阿新 • • 發佈:2022-03-15
檔案內指標的移動
鋪墊內容
# 這裡需要注意的是檔案讀取read關鍵字的引數問題。
# 1.文字模式下,read關鍵字內部的引數指的是讀取的字元數
file_name.read(9) # 即讀取檔案自開始起的九個字元。
# 2.二進位制模式下,括號內的數字代表讀取的位元組數
# 不同的編碼字元所需要的位元組數是不同的。unicode所有字元都是兩個位元組,utf8中文是三個位元組、英文是一個位元組
指標的移動(seek關鍵字)
'''read關鍵字讀取檔案所有內容後,指標會移動到檔案的末尾位置,這是如果需要再次讀取檔案裡的內容就需要讓讀取的指標移動位置 seek關鍵字的第二各引數是調整指標在檔案中的位置,0是起始位,1是所在位置,2是檔案內容的末尾。第一個引數是在第二個引數規定位置向後移動的位元組數''' with open(r'011.txt', 'r', encoding='utf8') as file1: print(file1.read(3)) file1.seek(3, 0) # 在起始位置向後移動三個位元組 print(file1.read(3)) file1.seek(3, 1) # 在所在位置向後移動三個位元組 print(file1.read(3).decode('utf8')) file1.seek(-3, 2) # 在檔案的末尾向前移動三個位元組 print(file1.read().decode('utf8')) print(file.tell()) # 獲取指標相對於檔案開頭的位置
注:seek的二個引數為1或者2時,只適用於二進位制模式
檔案的修改
檔案的佔有態和自由態
'''
檔案的佔有態和自由態是指檔案在計算機的儲存空間裡的兩種狀態。
在機械硬盤裡,檔案的刪除本質上就是其內刻印的資料從佔有態到自由態的轉變。
如果後來後來的檔案儲存到該區域的話,會對該區域原來自由態的資料進行覆蓋。
這就說明了機械硬盤裡的檔案是不能從內部更改的,修改的話只有兩種方式.
'''
檔案的修改
1. 建立新檔案,刪除舊檔案 實現思路:先以讀取的方式開啟檔案,然後以寫的方式建立臨時檔案,然後逐行讀取原檔案,修改並寫入臨時檔案。然後將原檔案刪除,把臨時檔案改名為原檔名 優缺點:優點就是節省記憶體,缺點就是檔案修改過程中會出現兩份。 2. 直接覆蓋舊檔案 實現思路:將檔案一次讀取到記憶體,然後修改結束覆蓋原檔案 優缺點:優點是檔案修改時只有一份,缺點就是會佔用記憶體 # 方式一: with open('011.txt','r', encoding='utf-8') as file1: data = file1.read() with open('b.txt', mode='w', encoding='utf-8') as file2: file2.write(data.replace('中國牛逼', '俄羅斯帶勁')) # 方式二 import os # 載入模組 with open('011.txt', 'r', encoding='utf-8') as read_file1: open('.011.txt.swap', 'w', encoding='utf-8') as wrife_f: for line in read_f: wrife_f.write(line.replace('中國牛逼', '俄羅斯帶勁')) os.remove('011.txt') # 刪除檔案 os.rename('.011.txt.swap', '011.txt') # 重新命名檔案