python檔案操作 字元編碼與檔案處理

2022-05-29 03:48:14 字數 3268 閱讀 3008

本文目錄:

一、字元編碼

二、檔案處理

應用程式

作業系統

計算機硬體

1. 先啟動python直譯器

2. 再將python檔案當作普通的文字檔案讀入記憶體

3. 解釋執行讀入記憶體的**,開始識別語法

字元編碼表: 人類的字元<------------>數字

1bytes=8bit

1b=8b 1位元組等於8個二進位制位

ascii碼

:只能識別英文本元,1英文本元=8bit

用8個二進位制bit(位元位)位表示乙個英文本元

gbk:能識別漢字與英文,1漢字=16bit,1英文本元=8bit

shift_jis

euc-kr

unicode:能夠識別萬國字元,1字元=2bytes=16bit

兩大特點:

1. 能夠相容萬國字元

2. 與各個國家的字元編碼都有對映關係

utf-8:是unicode的轉換格式,1個英文本元=1bytes 1漢字=3bytes

重點理論:

1編碼與解碼:

字元---編碼-->unicode的二進位制-------編碼----->gbk的二進位制

gbk的二進位制-----解碼-->unicode的二進位制----解碼->字元

2\ 解決亂碼問題的核心法則:

字元用什麼編碼格式編碼的,就應該用什麼編碼格式進行解碼

3\ python直譯器預設的字元編碼

python2:ascii

python3:utf-8通過檔案頭可以修改python直譯器預設使用的字元編碼

在檔案首行寫:

#coding:檔案當初存的時候用的字元編碼

針對python2直譯器中定義字串應該:

x=u"上"

對於python3解釋即便是x="上"

不加u字首也是存成unicode

在python3中

x='上'

#'上'存成了uncidoe

unicode--------encode----------->gbk

res=x.encode('

gbk') #

res是gbk格式的二進位制,稱之為bytes型別

gbk(bytes型別)-------decode---------->unicode

y=res.decode('

gbk') #

y就是unicode

關於字元編碼的操作:

1. 編寫python檔案,首行應該加檔案頭:#

coding:檔案存時用的編碼

2. 用python2寫程式,定義字串應該加字首u,如x=u'上'

3. python3中的字串都是unicode編碼的,python3的字串encode之後可以得到bytes型別

人類與計算機打交道用的都是人類的字元,而計算機無法識別人類的字元,只能識別二進位制,所以必須將人類的字元編碼成計算機能識別的二進位制數字.

檔案是作業系統提供給使用者/應用程式的一種虛擬單位,該虛擬單位直接對映的是硬碟空間

使用者/應用程式直接操作檔案(讀/寫)就被作業系統轉換成具體的硬碟操作,從而實現

使用者/應用程式將記憶體中的資料永久儲存到硬碟中

#

檔案處理的三個步驟

#f=open(r'c.txt',mode='r',encoding='utf-8') # 檔案物件(應用程式的記憶體資源)------》作業系統開啟的檔案(作業系統的記憶體資源)

## print(f)

#data=f.read()

#f.close() # 向作業系統傳送訊號,讓作業系統關閉開啟的檔案,從而**作業系統的資源

#上下文管理

#with open(r'c.txt',mode='r',encoding='utf-8') as f,open(r'b.txt',mode='r',encoding='utf-8') as f1:

#讀寫檔案的操作

#pass

#檔案的開啟模式:r(預設的) w a

#操作檔案內容的模式:

#t(預設的):操作檔案內容都是以字串為單位,會自動幫我們解碼,必須指定encoding引數

#b: 操作檔案內容都是以bytes(二進位制)為單位,硬碟中存的是什麼就取出什麼,一定不能指定encoding引數

#總結:t模式只能用於檔案本檔案,而b模式可以用於任意檔案

#r模式:唯讀模式,在檔案不存在時則報錯,如果檔案存在檔案指標跳到檔案的開頭

#with open(r'c.txt',mode='rt',encoding='utf-8') as f:

#print(f.read())

#print(f.readable())

#print(f.writable())

#f.write('hello') # 只能讀

#data=f.read()

#print(data,type(data))

#with open(r'c.txt',mode='rb') as f:

#data=f.read()

## print(data,type(data))

#res=data.decode('utf-8')

#print(res)

#with open(r'c.txt',mode='rt',encoding='utf-8') as f:

## line=f.readline()

## print(line,end='')

## line1=f.readline()

## print(line1,end='')

## line2 = f.readline()

## print(line2,end='')##

lines=f.readlines()

#print(lines)

#with open(r'c.txt',mode='rt',encoding='utf-8') as f:

#line=f.readline()

#print(line,end='')

#迴圈讀檔案內容的方法:

#with open(r'c.txt',mode='rt',encoding='utf-8') as f:

#for line in f:

#print(line,end='')

Python 字元編碼與檔案處理

目前計算機記憶體的字元編碼都是unicode,目前國內的windows作業系統採用的是gbk。python2預設的字元編碼方式是ascii python3預設的字元編碼方式是unicode py檔案頭部的 coding utf 8是幫助python識別.py檔案的編碼方式,故在寫.py檔案時要注意檔...

python 字元編碼與檔案處理

字元編碼 計算機工作就要通電,也就是說 電 驅使計算機幹活,而電只有高電壓 二進位制1 低電壓 二進位制0 也就是說計算機只認數字。程式設計的目的就是讓計算機幹活,程式設計的結果就是一堆字元,也就是我們程式設計最終實現的是 一堆字元驅動計算機幹活呢。1 python直譯器是執行檔案內容的,因而pyt...

字元編碼 檔案操作

cpu 將資料渲染給使用者,處理器 記憶體 臨時存放資料,斷電後消失 硬碟 永久儲存資料,斷電後還有 亂碼 存資料與讀資料採用的編碼表不一致 軟體開啟檔案讀取資料的流程 1.開啟軟體 2.往計算機發生乙個開啟檔案的指令,來開啟檔案 3.讀取資料渲染給使用者 訪問編碼不一致 亂碼 python直譯器開...