python for everybody课程作业_Programming for Everybody (Python)-Lecture 7 课程笔记
Coursera上面一門(mén)為零基礎(chǔ)學(xué)友提供的Python入門(mén)課程。貌似已經(jīng)是我堅(jiān)持第二久的課了XXD~
0. 之前的教學(xué)回顧
之前我們所學(xué)的Python語(yǔ)言都是集中于CPU和主存儲(chǔ)器之間的(也就是下圖黃圈內(nèi)的)一些工作,目前為止我們掌握的所有的東西都是為了接下來(lái)“跳出黃圈圈,走向粉圈圈(輔助存儲(chǔ)器)”做準(zhǔn)備,小伙伴們準(zhǔn)備好了嘛?(忘記這些圈圈的可以自覺(jué)復(fù)習(xí)第一周的功課~)
Week 7 課件截圖
1.0 本周學(xué)習(xí)內(nèi)容——文件 File
這里說(shuō)的是儲(chǔ)存于輔助存儲(chǔ)器的文本文件(text file),是一系列的信息。
1.1 打開(kāi)文件:open()
open函數(shù)是Python既有的嵌入式函數(shù)。
注:使用open命令之后,并不意味著你已經(jīng)讀取文件信息,而是得到一個(gè)“文件句柄(File Handle)”,說(shuō)明你已經(jīng)與文件建立了聯(lián)系,可以讀取它的信息(也可以想象成你念了一道open的咒令,新世界的大門(mén)向你打開(kāi),但真的只是“打開(kāi)”而已;要得到寶藏,你還得自己走進(jìn)去動(dòng)手拿呀~)。
handle = open(filename, mode) * :括號(hào)內(nèi),逗號(hào)前面表示文件名,后面表示你希望打開(kāi)文件的模式(即采取什么動(dòng)作)。
例如:open('mbox.txt', 'r')* —— 其中,mbox.txt是你要打開(kāi)的文件名,r說(shuō)明你要讀取它。
當(dāng)然了,如果你要打開(kāi)的文件不存在,就會(huì)報(bào)錯(cuò)。
1.2 換行:/n
文本文件可以看成是有一系列“行”組成的。在Python里面,我們?cè)谛枰獡Q行的字符之間加入“/n”表示換行。
注:每個(gè)換行(即每個(gè)“/n”)都占一個(gè)字符,和每個(gè)空格一樣。
2.讀取文件
用for循環(huán)(確定循環(huán))。
2.1 數(shù)一數(shù)文件一共有幾行?
fhand = open('mbox.txt')count = 0
for line in fhand:
count = count + 1
print 'Line Count:', count
如果文件不是很大,我們還是可以讓計(jì)算機(jī)為我們讀取整個(gè)文件的:
fhand = open('mbox-short.txt')inp = fhand.read()
print len(inp)
print inp[:20]
2.2 文檔內(nèi)搜索
通常可以有3種方式,隨你喜歡。
2.2.1 startswith
fhand = open('mbox-short.txt')for line in fhand:
line = line.rstrip()
if line.startswith('From'):
print line
注:為什么一定要用rstrip ?
每個(gè)“print"指令后面都會(huì)自帶換行/n,每一行(每條line)后面本身也自帶換行。因此如果沒(méi)有rstrip()把每行后面的“/n"去掉,你就會(huì)看到寫(xiě)一行空一行的局面……
2.2.2 continue
如果整個(gè)程序非常復(fù)雜,那就比較適合用這個(gè)函數(shù)。
fhand = open('mbox-short.txt')for line in fhand:
line = line.rstrip()
#Skip 'uninteresting lines'
if not line.startswith('From'):
continue
#Process our 'interesting' line
print line
注:這是一個(gè)逆向搜索("if not"),但是2.2.1和2.2.2的結(jié)果是一樣的。所謂逆向搜索的思路基本上就是“如果某一行不是你想找的,那就略過(guò)(skip)這行,搜索下一行”。
這樣的好處是:一旦某一行沒(méi)有你要找的內(nèi)容,那么Python就會(huì)回到循環(huán)的起點(diǎn),而不用再理會(huì)其后復(fù)雜的程序。
2.2.3 in
之前兩種方式都是對(duì)句首加以限制條件(startswith)來(lái)搜索,如果要找文中任意一個(gè)角落呢?那就要用上我們教師最喜歡的(之一XXD)"in".
fhand = open('mbox-short.txt')for line in fhand:
line = line.rstrip()
if not l‘@uct.ac.za' in line:
continue
print line
2.3 給我一個(gè)文件名,剩下的就交給我吧: raw_input
你不用每次要處理文件的時(shí)候都寫(xiě)個(gè)Python,好辛苦。你要做的就是稍稍改進(jìn)一下你的代碼,比如:
fname =ray_input('Enter the file name:')fhand = open(fname)
2.3.1 還有什么可以改善的:try/except
謹(jǐn)防有些熊孩子什么文件名都打得下手,“打”得不好(比如根本就不是個(gè)文件名啊什么的)系統(tǒng)狂報(bào)錯(cuò)怪我們寫(xiě)得不行,我們可以用個(gè)try/except結(jié)構(gòu)來(lái)先檢驗(yàn)一下~
fname =ray_input('Enter the file name:')try:
fhand = open(fname)
except:
print 'File cannot be opened:', fname
exit()
count = 0
for line in fhand:
if line.startswith('Subject')
count = count + 1
print 'There were', count, 'subject lines in', fname
總結(jié)
以上是生活随笔為你收集整理的python for everybody课程作业_Programming for Everybody (Python)-Lecture 7 课程笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python paperclip_Pyt
- 下一篇: 时间同步失败_跨系统历史数据同步脚本实战