python for everybody答案、7.2_Programming for Everybody (Python)-Lecture 7 课程笔记

Coursera上面一门为零基础学友提供的Python入门课程。貌似已经是我坚持第二久的课了XXD~

0. 之前的教学回顾

之前我们所学的Python语言都是集中于CPU和主存储器之间的(也就是下图黄圈内的)一些工作,目前为止我们掌握的所有的东西都是为了接下来“跳出黄圈圈,走向粉圈圈(辅助存储器)”做准备,小伙伴们准备好了嘛?(忘记这些圈圈的可以自觉复习第一周的功课~)

ecf489100de0

Week 7 课件截图

1.0 本周学习内容——文件 File

这里说的是储存于辅助存储器的文本文件(text file),是一系列的信息。

1.1 打开文件:open()

open函数是Python既有的嵌入式函数。

注:使用open命令之后,并不意味着你已经读取文件信息,而是得到一个“文件句柄(File Handle)”,说明你已经与文件建立了联系,可以读取它的信息(也可以想象成你念了一道open的咒令,新世界的大门向你打开,但真的只是“打开”而已;要得到宝藏,你还得自己走进去动手拿呀~)。

handle = open(filename, mode) * :括号内,逗号前面表示文件名,后面表示你希望打开文件的模式(即采取什么动作)。

例如:open('mbox.txt', 'r')* —— 其中,mbox.txt是你要打开的文件名,r说明你要读取它。

当然了,如果你要打开的文件不存在,就会报错。

1.2 换行:/n

文本文件可以看成是有一系列“行”组成的。在Python里面,我们在需要换行的字符之间加入“/n”表示换行。

注:每个换行(即每个“/n”)都占一个字符,和每个空格一样。

2.读取文件

用for循环(确定循环)。

2.1 数一数文件一共有几行?

fhand = open('mbox.txt')

count = 0

for line in fhand:

count = count + 1

print 'Line Count:', count

如果文件不是很大,我们还是可以让计算机为我们读取整个文件的:

fhand = open('mbox-short.txt')

inp = fhand.read()

print len(inp)

print inp[:20]

2.2 文档内搜索

通常可以有3种方式,随你喜欢。

2.2.1 startswith

fhand = open('mbox-short.txt')

for line in fhand:

line = line.rstrip()

if line.startswith('From'):

print line

注:为什么一定要用rstrip ?

每个“print"指令后面都会自带换行/n,每一行(每条line)后面本身也自带换行。因此如果没有rstrip()把每行后面的“/n"去掉,你就会看到写一行空一行的局面……

2.2.2 continue

如果整个程序非常复杂,那就比较适合用这个函数。

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

注:这是一个逆向搜索("if not"),但是2.2.1和2.2.2的结果是一样的。所谓逆向搜索的思路基本上就是“如果某一行不是你想找的,那就略过(skip)这行,搜索下一行”。

这样的好处是:一旦某一行没有你要找的内容,那么Python就会回到循环的起点,而不用再理会其后复杂的程序。

2.2.3 in

之前两种方式都是对句首加以限制条件(startswith)来搜索,如果要找文中任意一个角落呢?那就要用上我们教师最喜欢的(之一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 给我一个文件名,剩下的就交给我吧: raw_input

你不用每次要处理文件的时候都写个Python,好辛苦。你要做的就是稍稍改进一下你的代码,比如:

fname =ray_input('Enter the file name:')

fhand = open(fname)

2.3.1 还有什么可以改善的:try/except

谨防有些熊孩子什么文件名都打得下手,“打”得不好(比如根本就不是个文件名啊什么的)系统狂报错怪我们写得不行,我们可以用个try/except结构来先检验一下~

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值