計(jì)算機(jī)二級(jí) Python備考筆記

文件和數(shù)據(jù)格式化
文件是存儲(chǔ)在輔助存儲(chǔ)器上的一組數(shù)據(jù)序列,可以包含任何數(shù)據(jù)內(nèi)容。
文件是指一組帶標(biāo)識(shí)(標(biāo)識(shí)即為文件名)的具有完整邏輯意義的相關(guān)信息的集合。
文件屬性包括文件類(lèi)型、文件名稱(chēng)、文件長(zhǎng)度、文件的物理地址、文件的建立時(shí)間等。
文件包括文本文件和二進(jìn)制文件兩種類(lèi)型。文本文件和二進(jìn)制文件的存儲(chǔ)方式不同,所以文本文件不可以用二進(jìn)制文件方式讀入。
Python為源文件指定的默認(rèn)字符編碼是:UTF-8。
在Python語(yǔ)言中,
讀文件的方法有
read():從文件中讀入整個(gè)文件內(nèi)容
readline():用來(lái)讀取一行字符串
readlines():從文件中讀入所有行,以每行為元素形成一個(gè)列表/將文件的所有行讀入一個(gè)列表
寫(xiě)文件的方法有
write():向文件寫(xiě)入一個(gè)字符或字節(jié)流
writelines():將一個(gè)元素為字符串的列表整體寫(xiě)入文件
Python文件的讀寫(xiě)方法有(file表示使用open函數(shù)創(chuàng)建的對(duì)象):
?file.read([size]):參數(shù)可選,若未給定參數(shù)或參數(shù)為負(fù),則讀取整個(gè)文件內(nèi)容;若給出參數(shù),則讀取前 size長(zhǎng)度的字符串或字節(jié)流。
?fle.readline([size]):參數(shù)可選,若未給定參數(shù)或參數(shù)為負(fù),則讀取一行內(nèi)容;若給出參數(shù),則讀取該行前 size長(zhǎng)度的字符串或字節(jié)流。
?file.readlines([Thint]):參數(shù)可選,若未給定參數(shù)或參數(shù)為負(fù),則從文件中讀取所有行,以每行為元素形成一個(gè)列表;若給出參數(shù),則從文件開(kāi)始位置讀取到第hint個(gè)字節(jié)所在的行為止,并以每行為元素形成一個(gè)列表。
?file.write(str):將字符串或字節(jié)流寫(xiě)入文件,每次寫(xiě)入后將會(huì)記錄一個(gè)寫(xiě)入指針。該方法需要有參數(shù),沒(méi)有參數(shù)會(huì)報(bào)錯(cuò)。
?file.writelines(lines):將一個(gè)元素為字符串的列表寫(xiě)入文件。
Python能處理的二進(jìn)制文件包含圖形圖像文件、音頻文件、視頻文件、可執(zhí)行文件、各種數(shù)據(jù)庫(kù)文件、各類(lèi)Office文件(PDF、EXCEL)等。
在Python中,open()函數(shù)提供了7種基本的文件打開(kāi)模式:前四種和后三種可以組合使用。
’r’:只讀模式
’w’:只寫(xiě)方式,若文件存在覆蓋原來(lái)的內(nèi)容
‘x’:創(chuàng)建新的文件,只寫(xiě)方式打開(kāi)
‘a(chǎn)’:只寫(xiě)方式打開(kāi),若文件存在,文件指針將會(huì)放到文件的結(jié)尾,內(nèi)容追加在原文件內(nèi)容后面;若文件不存在則創(chuàng)建新的文件進(jìn)行寫(xiě)入
'b':二進(jìn)制文件模式
’t’:文本文件模式
‘+’:想要讀文件也想要寫(xiě)文件
r:只讀模式,如果文件不存在,返回異常FileNotFoundError,默認(rèn)值。
x:創(chuàng)建寫(xiě)模式,文件不存在則創(chuàng)建,存在則返回異常FileExistsError。
w:覆蓋寫(xiě)模式,文件不存在則創(chuàng)建,存在則完全覆蓋原文件。
a:追加寫(xiě)模式,文件不存在則創(chuàng)建,存在則在原文件最后追加內(nèi)容。
二進(jìn)制文件也可以使用記事本或其他文本編輯器打開(kāi),但是一般來(lái)說(shuō)無(wú)法正常查看其中的內(nèi)容;
用內(nèi)置函數(shù) open()且以w模式打開(kāi)文件,若文件存在,則會(huì)覆蓋原來(lái)的內(nèi)容而不會(huì)引發(fā)異常。
如果文件只被打開(kāi),文件內(nèi)容是不會(huì)裝入內(nèi)存的,只有執(zhí)行讀取操作的時(shí)候才會(huì)把文件內(nèi)容相應(yīng)的長(zhǎng)度(在read()函數(shù)中指定讀取的字節(jié)長(zhǎng)度)裝入內(nèi)存。
open() 打開(kāi)文件后,返回一個(gè)文件對(duì)象,用于后續(xù)的文件讀寫(xiě)操作
當(dāng)文件以二進(jìn)制方式打開(kāi)的時(shí)候,是按字節(jié)流方式讀寫(xiě)
write(x)函數(shù)要求x必須是宇符串類(lèi)型,不能是int類(lèi)型
打開(kāi)文件時(shí),
?編碼方式是可選參數(shù)
?省略打開(kāi)模式,會(huì)默認(rèn)只讀模式打開(kāi)
若沒(méi)有采用close()關(guān)閉文件,程序退出時(shí)一般會(huì)自動(dòng)關(guān)閉,但有可能導(dǎo)致數(shù)據(jù)流失
采用讀方式打開(kāi)文件,不能對(duì)文件進(jìn)行寫(xiě)操作;只以寫(xiě)模式打開(kāi)文件,同樣不可以進(jìn)行讀操作。
對(duì)文件進(jìn)行讀寫(xiě)操作之后必須關(guān)閉文件以確保所有內(nèi)容都得到保存
文件對(duì)象的seek()方法用來(lái)定位文件的讀/寫(xiě)位置//設(shè)置當(dāng)前文件操作指針的位置//控制對(duì)文件內(nèi)容的讀寫(xiě)位置
tell()方法用來(lái)返回文件指針的當(dāng)前位置
?文件包括文本文件和二進(jìn)制文件兩種類(lèi)型。Python對(duì)文本文件和二進(jìn)制文件采用統(tǒng)一的操作步驟,即“打開(kāi)-操作-關(guān)閉”。
?采用文本方式讀入文件,文件經(jīng)過(guò)編碼形成宇符串,打印出有含義的字符;采用二進(jìn)制方式打開(kāi)文件,文件被解析為字節(jié)流。
?Python通過(guò)open()函數(shù)打開(kāi)一個(gè)文件,并返回一個(gè)操作這個(gè)文件的變量,
語(yǔ)法:<變量名>=open(<文件路徑及文件名>,<打開(kāi)模式>)。
?文件使用結(jié)束后要用close方法關(guān)閉,釋放文件的使用授權(quán),語(yǔ)法:<變量名>.close(),
??數(shù)據(jù)維度:列表可以表示一二維數(shù)據(jù),集合可以表示一維數(shù)據(jù),字典一般表示高維數(shù)據(jù)。
* 一維數(shù)據(jù)
? ? - 由對(duì)等關(guān)系的有序或無(wú)序數(shù)據(jù)構(gòu)成,采用線(xiàn)性方式組織,對(duì)應(yīng)于數(shù)學(xué)中的集合或數(shù)組的概念。
? ? - 任何可以以序列或集合表示的內(nèi)容都可以看作是一維數(shù)據(jù)。
? ? - 可以用列表、元組、集合等結(jié)構(gòu)表示
? ? - 采用線(xiàn)性方式存儲(chǔ)
* 二維數(shù)據(jù)
? ? - 由關(guān)聯(lián)關(guān)系的數(shù)據(jù)構(gòu)成,采用表格方式組織,對(duì)應(yīng)于數(shù)學(xué)中的矩陣
? ? - 一維數(shù)據(jù)的組合形式,由多個(gè)一維數(shù)據(jù)組合形成
? ? - 可以使用二維列表表示,即列表中的每一個(gè)元素對(duì)應(yīng)二維數(shù)據(jù)的每一行
? ? - 二維數(shù)據(jù)處理等同于二維列表的操作
? ? - 二維數(shù)據(jù)并不是一定要用二重循環(huán)嵌套格式存儲(chǔ)
* 高維數(shù)據(jù)
? ? - 由鍵值對(duì)類(lèi)型的數(shù)據(jù)組成,采用對(duì)象方式組織
JSON格式可以表示比二維數(shù)據(jù)還復(fù)雜的高維數(shù)據(jù),也可以表示一維數(shù)據(jù)
列表可以嵌套表示多維數(shù)據(jù)
在Python語(yǔ)言中,二維列表對(duì)象寫(xiě)入CSV格式文件采用遍歷循環(huán)和字符串的join()方法相結(jié)合。//列表中保存的二維數(shù)據(jù),可以通過(guò)循環(huán)用write()寫(xiě)入CSV文件
#ls是一個(gè)二維列表
f=open(“cpi.csv”, “w”)
for row in ls:
?f.write(“,”.join(row)+”\n”)
f.close()
在Python語(yǔ)言中,讀取CSV格式文件中的二維數(shù)據(jù)采用遍歷循環(huán)和字符串的split()方法相結(jié)合,示例如下:
f=open("cpi.csv". "r")
Is = []
for line in f:
?Is.append(line.strip("\n").split(","))
f.close()
split()方法一般在將文件中的數(shù)據(jù)轉(zhuǎn)化為列表時(shí)使用。
CSV格式(Comma-Separated Values,逗號(hào)分割值)
?以英文逗號(hào)分隔的存儲(chǔ)格式,
?大部分編輯器都支持直接讀入或保存為CSV格式,
?最廣泛的應(yīng)用是在程序之間轉(zhuǎn)移表格數(shù)據(jù)
?沒(méi)有通用標(biāo)準(zhǔn)規(guī)范,使用的字符編碼同樣沒(méi)有被指定,但ascii碼是最基本的通用編碼【Python字符編碼以Unicode編碼存儲(chǔ)】
?是一種通用的、相對(duì)簡(jiǎn)單的文件格式,?
?每一行是一維數(shù)據(jù),可以使用Python的列表類(lèi)型和元組類(lèi)型表示
?不僅可以保存一維數(shù)據(jù),還可以保存二維數(shù)據(jù)。
??
CSV文件
?采用純文本格式,通過(guò)單一編碼表示字符;?
?以行為單位,開(kāi)頭不留空行;?
?每行表示一個(gè)一維數(shù)據(jù),多行表示多維數(shù)據(jù);
?以逗號(hào)分隔每列數(shù)據(jù),列數(shù)據(jù)為空也要保留逗號(hào)。
Python文件操作方法有(fle表示使用open 函數(shù)創(chuàng)建的對(duì)象):?
file.close()、
file. flush() 、
file.fileno()
file.isatty()
file.next()
file.read()
file.readline()
file.readlines()
file.seek(offset)?
file.tell()?
file.truncate()
file.write(str)
file.writelines(lines)。
open()函數(shù)打開(kāi)一個(gè)文件,并返回可以操作這個(gè)文件的變量f,并且open()函數(shù)有兩個(gè)參數(shù):文件名和打開(kāi)模式。
print(f)浯句輸出的是変量f代表的文件的相關(guān)信息:<io.TextIlOWrapper
name='exam.txt'
mode='r'
encoding='cp936'>
socket()方法是用于創(chuàng)建套接字