標籤:位元組 記憶體 ada open print 大數 簡單 nbsp 換行
切片的補充:
切片相當於淺copy:
a = [1,2,3,4,5]b = a[:]print(id(a),id(b),id(a[0]),id(a[0]))#2432299195592 2432299195528 #1795645664 1795645664
檔案的操作:(分為三步)
1.開啟檔案.產生檔案控制代碼 f
2.對檔案控制代碼進行操作
3.關閉檔案控制代碼
f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘r‘)f.read()content = f.close()print(content)f.close()
‘open()是python的內建函數,調用的是windows系統的命令‘
運行這三步報錯的原因:
1.編碼方式錯誤
2.路徑不對
開啟檔案的模式以及對應的操作:
1.讀
以mode=‘r的模式開啟文字類檔案(預設開啟模式)
f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘r‘)b = f.read()print(b)f.close() #五種讀取方法: f.read() 全部讀取,以字串形式輸出 f.read(10),,n表示read,在r模式下是讀n個字元,在rb模式下是讀n個位元組
f.readline() 按行讀取
f.readlines() 全部讀取,以列表的形式輸出 #----------以上四種方式讀大資料時佔用記憶體 # 以for迴圈方式讀取 #(for迴圈讀可迭代對象,每次在記憶體中唯讀取一行,讀後就刪除不佔用記憶體)
f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘r‘) for line in f: print(line,end=‘‘) #end=‘‘,清除分行符號 f.close()
以mode=‘rb‘開啟任何檔案
with open(r‘a.txt‘,‘rb‘) as f1,open(r‘b.txt‘,‘a‘,encoding=‘utf-8‘) as f2: for line in f1: f2.write(line.decode())
以mode=‘r+‘開啟檔案(可讀可追加)
1.先讀後寫
f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘r+‘)c = f.read(3) #c = f.read(3),不管是讀三個還是全部的游標都移到了最後一行末尾print(c)b = f.write(‘a‘)f.close()
2.先寫後讀
f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘r+‘)f.write(‘簡單‘) # 游標在開頭,寫入幾個字元覆蓋幾個字元f.close()
2.追加
a:只追加
f = open(r‘aaa.txt‘,encoding=‘utf-8‘,mode=‘a‘) # 沒有aaa.txt檔案則在同一個檔案夾下建立該檔案然後寫入 #有aaa.txt檔案則在末尾添加新內容 #有aaa.txt檔案在末尾添加新內容+\n則換行追加
f.write() # 只能加字串
f.writelines() # 可以將列錶轉換成字串加入檔案,也可以直接在末尾加入字串,元素中不能由數字
f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘a‘)f.writelines([‘a‘,‘b‘,‘c‘]) #字串裡不能由int類型f.close()
a+:先追加再讀,游標還在末尾,
想要讀要添加:f.seek(0)
(游標在最後一行末尾,先讀,則讀不出內容.)
f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘a+‘)f.writelines(‘aaa‘)f.seek(0)b = f.read()print(b)f.close()
3.寫w:
f = open(r‘aaa.txt‘,encoding=‘utf-8‘,mode=‘w‘) #沒有aaa.txt檔案則在同一個檔案夾下建立該檔案然後寫入 #有aaa.txt檔案則清空原檔案,並添加新內容
4.檔案的其他動作方法:
f.readable()
f.writeable()
f.seek() 調整游標(按位元組移動游標)
f.seek(0)
f.seek(0,2)將游標調整到最後一行末尾,,以位元組的方式移動
(0) 游標在開頭
(0,1) 游標在現在位置
(0,2) 游標的末尾,往後0個位元組
(1,1) 游標在現在位置往後1個位元組
f.tell() 擷取到指標的位置
f.truncate() 對原檔案進行截取
要在‘r+‘,‘a+‘模式下使用,不能再‘w‘,模式下使用
5.用with開啟檔案
with open() as f: pass #優點: # 可以主動關閉檔案控制代碼 # 可以同時開啟多個檔案的控制代碼 with open(1) as f1, open(2) as f2
6.檔案改的操作
檔案的改的操作: 以讀的模式開啟原檔案,產生一個檔案控制代碼f1 以寫的模式建立一個新檔案,產生一個檔案控制代碼f2 讀取原檔案內容,進行修改後,寫入新檔案 將原檔案刪除 將新檔案重新命名成原檔案
import oswith open(‘alex的深度剖析‘, encoding=‘utf-8‘) as f1, open(‘alex的深度解析.bak‘,encoding=‘utf-8‘,mode=‘a‘) as f2: for line in f1: new_line = line.replace(‘alex‘,‘SB‘) f2.write(new_line)os.remove(‘alex的深度剖析‘)os.rename(‘alex的深度解析.bak‘, ‘alex的深度剖析‘)
python學習第八天,,檔案操作,切片相當於淺copy