你要偷偷的學(xué)Python,然后驚呆所有人(第三天)

標(biāo)題無意冒犯,就是覺得這個廣告挺好玩的

上面這張思維導(dǎo)圖,喜歡的朋友可以帶走

好,切入正題

文章目錄

前言

“你的如意金箍棒”已到貨,請簽收

文件讀寫

計算機(jī)編碼表

讀取文件

第一步:打開文件

絕對路徑 and 相對路徑 注意點(diǎn)

第二步:讀取文件

第三步:關(guān)閉文件

寫入文件

小練習(xí)

我的代碼


前言

本系列文默認(rèn)各位有一定的C或C++基礎(chǔ),因?yàn)槲沂菍W(xué)了點(diǎn)C++的皮毛之后入手的Python。也要感謝大家的支持,前兩篇訪問、收藏、點(diǎn)贊、評論量都“居高臨下”,感謝感謝,還有的朋友迫不及待等第三篇,真的很感動,雖然我寫得慢,但是晚上少打兩把游戲也是可以提高更新速度的啦。

本系列文默認(rèn)各位會百度,本系列也會著重培養(yǎng)各位的自主動手能力,畢竟我不可能把所有知識點(diǎn)都給你講到,所以自己解決需求的能力就尤為重要,所以我在文中埋得坑請不要把它們看成坑,那是我留給你們的鍛煉機(jī)會,請各顯神通,自行解決。123

如果大家在學(xué)習(xí)中遇到困難,想找一個python學(xué)習(xí)交流環(huán)境,可以加入我們的python,裙號930900780,領(lǐng)取python學(xué)習(xí)資料,會節(jié)約很多時間,減少很多遇到的難題。

“你的如意金箍棒”已到貨,請簽收

今天我們要講一下Python里面比較重要的一環(huán),也就是Python能夠異軍突起的非常重要的一個原因。

大家有沒有想過,在這個編程語言滿天飛的時代,有老牌玩家C/C++,前端PHP,H5,新秀Java,數(shù)學(xué)界有MATLAB和R,為什么Python能夠脫穎而出呢?

對,因?yàn)镻ython是個萬金油般的存在!它可以去調(diào)用各種各樣的包來為它工作,包里面有各種的函數(shù),比方說我現(xiàn)在要用Python來處理一大堆的Excel表格,那我是不是要自己寫表格處理函數(shù)呢?并不是的,自己寫太麻煩,為什么不站在巨人的肩膀上呢?有個包叫‘csv’的,專門用來干這個事情,那我把它喊過來不就好了嘛。

對,就是模塊調(diào)用,學(xué)完之后,就可以用Python去批量處理表格啊、去做簡單的人臉識別啊、去做些小項目。

怎么樣,是不是特別激動!??!

好,別急,慢慢來。這里呢,需要大家有一款稱手的編譯器了,可以是VS(支持py編程的),也可以是pycharm,或者其他的。

我用的是pycharm,VS開起來太大了。

下載pycharm之前,要先下載一個Python,現(xiàn)在是北京時間:2020-10-23,最新版是3.9.0。

這倆東西在各自官網(wǎng)上都有推薦最新版,安裝也很方便,基本就是一路next,不過建議不要安裝在C盤。

大家動起來?。?!

文件讀寫

函數(shù)和類講完,自然也就是文件讀寫流了。

在學(xué)完數(shù)據(jù)庫的一段時間里,我一度認(rèn)為文件讀寫沒啥用了,這年頭誰還用文件吶,后來發(fā)現(xiàn)我錯了。

計算機(jī)編碼表

我們先來看一張計算機(jī)編碼表:

編碼表適用性特點(diǎn)ASCII碼英文大小寫字符,不支持中文美國人的發(fā)明,占用空間小GB2312碼、GBK碼支持了中文GBK碼是GB2312的升級Unicode碼支持國際語言占用空間大,適用性強(qiáng)。UTF- 8碼支持國際語言轉(zhuǎn)化,占用空間小。ASCII碼被UTF- -8碼包含

文件讀寫,是Python代碼調(diào)用電腦文件的主要功能,能被用于讀取和寫入文本記錄、音頻片段、Excel文檔、保存郵件以及任何保存在電腦上的東西。

我用C++做過文件讀寫,再Linux上,在Windows上,也用QT寫過有界面的文件讀寫,現(xiàn)在來試試Python的。

讀取文件

具體流程如下:

(以后就換圖片風(fēng)格啦,我用圖片也是為了大家看的更直觀嘛)

第一步:打開文件

首先在創(chuàng)建一個測試文件,比如說放在桌面上的test.txt文件,里面隨便寫上點(diǎn)啥,打開你的編譯器,新建一個project,開始編程。

file1 = open(r'D:\Users\asus\Desktop\test.txt','r',encoding='utf-8')1

file1這個變量是存放讀取的文件數(shù)據(jù)的,以便對文件進(jìn)行下一步的操作。

(可以看出來有三個參數(shù)吧)

open(path,mode,encoding)1

參數(shù)釋義:

第一個參數(shù)是文件的保存地址,一定要寫清楚,否則計算機(jī)找不到

這里有兩種方法,一種是寫文件的絕對路徑,一種是文件的相對路徑。我上面那種寫法就是絕對路徑,如果要用相對路徑的話嘛,也可以把文件拖動到你的項目文件下,然后:看圖吧

對吧,這幾種方式都是可以的,不過如果新手的話建議使用絕對路徑,絕對路徑用熟了再說。

怎么看絕對路徑?右擊文件->屬性

絕對路徑 and 相對路徑 注意點(diǎn)

絕對路徑就是最完整的路徑,相對路徑指的就是【相對于當(dāng)前文件夾】的路徑,也就是你編寫的這個py文件所放的文件夾路徑!

Windows系統(tǒng)里,常用\來表示絕對路徑,/來表示相對路徑

別忘了\在Python中是轉(zhuǎn)義字符,所以時常會有沖突。為了避坑,Windows的絕對路徑通常要稍作處理,寫成以下兩種格式

open('D:\\Users\\asus\\Desktop\\test.txt')#將'\'替換成'\\'open(r'D:\Users\asus\Desktop\test.txt')#在路徑前加上字母r12345

第二個參數(shù)是權(quán)限位,主要有這么一些:

r(read,讀)r只讀,指針在開頭,文件不存在則報錯rb二進(jìn)制只讀,其余同左r+讀寫,其余同左rb+二進(jìn)制讀寫,其余同左w(write,寫)w只寫,文件不存在則新建,存在則覆蓋wb二進(jìn)制只寫,其余同左w+讀寫,其余同左wb+二進(jìn)制讀寫,其余同左a(append,追加)a追加,文件存在指針放在末尾,文件不存在則新建ab二進(jìn)制追加,其余同左a+追加且可讀,其余同左ab+二進(jìn)制追加且可讀,其余同左

第三個參數(shù)encoding=‘utf-8’,表示的是返回的數(shù)據(jù)采用何種編碼,一般采用utf-8或者gbk。

第二步:讀取文件

打開文件之后,就可以用read()函數(shù)進(jìn)行讀取的操作了,這個上邊其實(shí)已經(jīng)有體現(xiàn)了,read()函數(shù)啊。

但是,其實(shí)并沒有這么簡單,如果我想一行一行讀呢?如果我想一個單詞一個單詞讀呢?怎么辦?

這里,我們需要使用一個新函數(shù)readlines(),顧名思義,一行一行讀。

認(rèn)真看?。?/p>

信息量不大啊,看完我們來進(jìn)行下一步切割。

這里雖然把每行都分開了,但是我們是要把每個數(shù)字都分開是吧,顯然現(xiàn)在我們還不能滿意。

那就用字符串切割函數(shù)吧:split()

split()是把字符串分割的,而還有一個join()函數(shù),是把字符串合并的。

a=['c','a','t']b=''print(b.join(a))c='-'print(c.join(a))12345

運(yùn)行結(jié)果:

catc-a-t12

第三步:關(guān)閉文件

關(guān)閉文件,使用的是close()函數(shù)。

file1.close()? 1

為啥要關(guān)閉文件呢?原因有兩個:1.計算機(jī)能夠打開的文件數(shù)量是有限制的,open()過多而不close()的話,就不能再打開文件了。2.能保證寫入的內(nèi)容已經(jīng)在文件里被保存好了。

文件關(guān)閉之后就不能再對這個文件進(jìn)行讀寫了。如果還需要讀寫這個文件的話,就要再次 open() 打開這個文件。

這里再順便補(bǔ)充一個用法,為了避免打開文件后忘記關(guān)閉,占用資源或當(dāng)不能確定關(guān)閉文件的恰當(dāng)時機(jī)的時候,我們可以用到關(guān)鍵字with,之前的例子可以寫成這樣:

# 使用with關(guān)鍵字的寫法withopen('test.txt','r')asfile1:#with open('文件地址','讀寫模式') as 變量名:#格式:冒號不能丟file1.read()#格式:對文件的操作要縮進(jìn)#格式:無需用close()關(guān)閉1234567

寫入文件

打開文件嘛,我就不多說啦,把‘r’改成‘w’,具體看上面那個表格。

你去寫,寫完之后你就會驚喜的發(fā)現(xiàn),原文件內(nèi)容被洗掉重寫了。。

如果不想出現(xiàn)這種情況的話,可以將‘w’改成‘a(chǎn)’

那么 b 有什么用呢,那個二進(jìn)制的。

因?yàn)橛泻芏辔募谟嬎銠C(jī)中的存儲,它是采用二進(jìn)制的,并不是肉眼能看得懂的文字信息。

比方說音頻,比方說圖片等等。這時候就需要使用 ‘b’ 權(quán)限的加持了。

小練習(xí)

學(xué)了這個文件讀寫處理啊,我們來玩點(diǎn)小游戲吧。

這里有一組數(shù)據(jù):

第一列,42,25,65,14,78第二列,55,75,23,74,24第三列,58,45,31,15,65第四列,16,86,43,21,751234

然后把每列數(shù)據(jù)求和,寫在文件下邊:

第一列,XX第二列,XX···123

放一張圖隔開,再放上我的實(shí)現(xiàn)

我的代碼

file= open(r'D:\Users\asus\Desktop\test.txt','r',encoding='GB2312')#with open(r'D:\Users\asus\Desktop\test.txt','r',encoding='GBK') as file1:file_lines = file.readlines()file.close()final_scores = []foriinfile_lines:? ? data = i.strip().split(',')? ? sum =0forscoreindata[1:]:? ? ? ? sum = sum + int(score)? ? result = data[0]+str(sum)+'\n'print(i)? ? final_scores.append(result)#這里表示文件已經(jīng)被關(guān)閉了writer = open(r'D:\Users\asus\Desktop\test.txt','a',encoding='GBK')writer.write('\n')writer.writelines(final_scores)writer.close()123456789101112131415161718192021

這里要注意一點(diǎn)就是你的文本文件不能有’空行’,這個空行往往肉眼看不見。。。。

最后多說一句,小編這里整理了一套最新的python系統(tǒng)學(xué)習(xí)教程,包括從基礎(chǔ)的python腳本到web開發(fā)、爬蟲、數(shù)據(jù)分析、數(shù)據(jù)可視化、機(jī)器學(xué)習(xí)等。想要這些資料的可以進(jìn)q裙930900780領(lǐng)取。

本文章素材來源于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系刪除。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容