1. 程式人生 > >python入門(六)二次編碼與檔案操作

python入門(六)二次編碼與檔案操作

二次編碼

密碼本:

ascii -- 沒有中文 英文1位元組

gbk -- 英文 8b(位) 1B(位元組) 中文 16b 2B

unicode -- 英文32b 4B 中文32b 4B

utf-8 -- 英文8b 1B 歐洲16b 2B 亞洲24b 3B

name="你好"
s1=name.encode("utf-8")#編碼
s2=name.encode("gbk")#編碼
s2=s1.decode("utf-8")#用什麼編碼 就用什麼解碼
3.14 檔案操作
讀、覆蓋寫、追加(r、w、a)

讀操作(r):

f=open("哈哈",mode="r",encoding="utf-8")#open是開啟:引號下填寫檔案路徑 我這裡用的是相對路徑,逗號隔開,然後寫操作方式 r 是讀的意思, 然後寫編碼方式,我這裡寫"utf-8"
print(f.read())#讀取全部,選擇read()
print(f.readline())#讀取一行,選擇readline()
print(f.readlines())#一行一行讀取,存放在列表中
f.close()#檔案操作完成,然後進行關閉

解決大檔案:

for i in f:
print(i)#本質上是一行行的讀取

注意:檔案讀取在哪,游標就顯示在哪

f 可寫成任意變數等,它被稱作:檔案控制代碼,檔案操作符,或者檔案操作物件等。 open 是Python呼叫的作業系統(windows,linux,等)的功能,而windows的預設編碼方式為gbk,linux預設編碼方式為utf-8,所以你的檔案用什麼編碼儲存的,就用什麼方法開啟,一般都是用utf-8。 mode為開啟方式:常見的有r,w,a,r+,w+,a+.rb,wb,ab,等,預設不寫是r。 流程就是開啟檔案,產生一個檔案控制代碼,對檔案控制代碼進行相應操作,關閉檔案。

相對路徑與絕對路徑

f=open("哈哈",mode="r",encoding="utf-8")#同一個資料夾下面的檔案,直接寫檔名就可以。
open('C:\Users\Meet')#絕對路徑:從根目錄下開始一直到檔名

../返回 上一層

我們在使用絕對路徑的時候因為有\這樣程式是不能識別的,解決方法:

open('C:\Users\Meet') #這樣程式是不識別的

路徑轉義://

解決方法一:

open('C:\Users\Meet') #這樣就成功的將\進行轉義 兩個\代表一個

解決方法二:

open(r'C:\Users\Meet') #這樣相比上邊的還要省事,在字串的前面加個小r也是轉義的意思 推薦使用這種
覆蓋寫操作(w):

w分為兩步:1、先清空檔案 2、填入檔案

f=open("haha",mode="w",encoding="utf-8")
f.write("你好好")#寫的內容要用引號引起來;在寫檔案的時候我們要養成一個寫完檔案就重新整理的習慣. 重新整理flush()

repr 顯示資料原生態

f.flush()
f.close()
當使用w模式下,在開啟檔案的時候就會把檔案所有內容清空,然後操作

注意點:如果檔案不存在使用w模式會建立檔案,檔案存在w模式是覆蓋寫,在開啟檔案時會把檔案中所有的內容清空

追加操作(a):

f=open("哈哈",mode="a",encoding="utf-8")#無論游標在什麼位置,都是在檔案的末尾寫入
f.write("年後")#預設是是有自動換行的,需要手動加 取消換行
f.close()

r+、w+、a+(讀寫:先讀後寫 、清空寫讀、追加寫讀)

r+:先讀後寫

錯誤的操作 (坑)

f = open("蘿莉小姐姐電話號","r+",encoding="utf-8")
f.write("常鑫你太美")
print(f.read())

正確的操作:

f = open("蘿莉小姐姐電話號","r+",encoding="utf-8")
print(f.read())
f.write("常鑫你太美")

#w+:清空寫讀

f = open("蘿莉小姐姐電話號","w+",encoding="utf-8")
f.write("常鑫你太美")
print(f.tell())
f.seek(15)
print(f.tell())
print(f.read())

a+:追加寫讀

f = open("蘿莉小姐姐電話號","a+",encoding="utf-8")
f.write("常鑫你太美")
print(f.tell()) # 位元組數
print(f.seek(0,0)) # 0將游標移動到檔案的頭部
print(f.read())

其他操作

tell #檢視游標--返回的是位元組數
seek #移動游標
seek(0,0)#移動到檔案得頭部
seek(0,1)#當前位置
seek(0,2)#移動到檔案末尾
seek(3)#按照位元組進行移動(按照編碼集)

f.read(3)#要看當前模式如果是 r w a模式則是讀取得字元 如果是r+ w+ a+ 讀取得則是位元組(按照編碼集)

檔案修改

f = open("蘿莉小姐姐電話號","r",encoding="gbk")
s = f.read()
s1 = s.replace("你太美","吃煎餅")

f1 = open("蘿莉小姐姐電話號","w",encoding="gbk")
f1.write(s1)

with 關鍵字 open("蘿莉小姐姐電話號","r",encoding="gbk") as f:
檔案操作的具體內容

w,a 檢測有檔案就操作,沒檔案就建立

檔案修改名稱

import os
os.rename("蘿莉小姐姐電話號","蘿莉小姐姐電話號.bak")
os.rename("蘿莉小姐姐電話號.txt","蘿莉小姐姐電話號")

with open("蘿莉小姐姐電話號","r",encoding="gbk")as f:
pass # 縮排裡操作檔案
print(f.read()) # 檔案及已經關閉