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

0. 之前的教学回顾

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

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

python for everybody课程作业_Programming for Everybody (Python)-Lecture 7 课程笔记相关推荐

  1. 代写python代码一般多少钱_代写CO 353课程作业、代做Python程序设计作业、代写Python语言作业...

    代写CO 353课程作业.代做Python程序设计作业.代写Python语言作业 日期:2020-03-17 11:22 CO 353 - Homework assignment 4 Winter ' ...

  2. python程序设计作业_CS602留学生作业代做、代写Programming课程作业、代做Python语言作业、Python编程设计作业调试...

    CS602留学生作业代做.代写Programming课程作业.代做Python语言作业.Python编程设计作业调试 日期:2019-12-06 10:50 CS602 - Data-Driven D ...

  3. 代写python期末作业价格_代做program留学生作业、代写Python语言作业、代做algorithm课程作业、代写Python程序设计作业...

    代做program留学生作业.代写Python语言作业.代做algorithm课程作业.代写Python程序设计作业 日期:2020-01-09 10:13 Coursework Brief: ASS ...

  4. 兰州大学C语言程序设计课程作业,【兰州大学|兰州大学C语言程序设计课程作业( 五 )】语言程序设计|课程|作业-傻大方...

    『易坊知识库摘要_兰州大学|兰州大学C语言程序设计课程作业( 五 )』34.用户未作答标准答案exp04. 以下叙述中正确的是 在程序的一行上可以出现多个有效的预处理命令行使用带参的宏时,参数的类型应 ...

  5. 兰州大学c语言课程作业答案,2016兰州大学C语言程序设计课程作业1附答案.doc

    C语言程序设计课程作业_A 历次成绩完成时间查看详情1.0.02015-11-21 09:15:312.0.02015-11-21 09:15:243.0.02015-11-21 09:15:184. ...

  6. 计算机课程布置作业,计算机基础课程作业布置与批改方式-计算机基础课程有哪些.pdf...

    最新资料欢迎阅读 计算机基础课程作业布置与批改方式 | 计算 机基础课程有哪些 计算机基础课程包括计算机基础. c 语言程序设计. office 高级 应用.access 数据库程序设计,大部分作业采 ...

  7. 大学计算机基础课程作业第4-6章,大学计算机基础课程作业(4—6章)(5页)-原创力文档...

    大理大学成人高等教育 大学计算机基础课程作业(第4-6章) 1.课程名称:大学计算机基础 2.适用专业:非计算机类各专业 3.选用教材:大学计算机基础,陈本辉 杨锦伟 主编,北京师范大学出版社,201 ...

  8. python代写学生作业_代做python程序作业、代写 tree Tpython留学生作业

    代做python程序作业.代写 tree Tpython留学生作业 日期:2018-05-27 02:10 Exercise 2 We are again interested in lists of ...

  9. 计算机专业指南 专 平时作业,《计算机专业指南》课程作业要求

    <计算机专业指南>课程作业要求 <计算机专业指南>课程作业要求 考核要求和成绩评定 考核要求: 1.业的认识,专业岗位能力要求的调查和个人的课程学习安排. 2.学习心得报告,要 ...

最新文章

  1. POSIX正则表达式 验证电子邮件地址
  2. 《Android系统源代码情景分析》一书正在连载中
  3. Table中Family和Qualifier的关系与区别(转载)
  4. VC6获取硬盘序列号、型号、修订版本号
  5. 运维工程师是桥的护栏_【消息】秭归将建螺旋桥
  6. Java、Javascript、Javaweb三者的区别
  7. Elasticsearch+Mongo亿级别数据导入及查询实践
  8. 微软2011年10月最有价值专家(MVP)名单 51CTO十三位用户当选
  9. 【通信】基于量子密钥分发密钥率仿真含Matlab源码
  10. python运维系统模板,Python自动化运维之改造网页模板
  11. ACM河南第八届省赛题
  12. linux嵌入式主要学什么软件,嵌入式软件工程师需要学什么?嵌入式Linux开发的工作内容...
  13. 如何解决 Apple ID 验证失败,无法正常使用?
  14. linux根据修改日期删除,在Linux下怎么一次性删除掉那些修改时间为指定日期的所有文件?...
  15. 区别辨析(选择)choose、select、elect、pick、prefer、opt
  16. Python自动获取邮箱验证码【上集】
  17. CSS隐藏多余文字的几个方法
  18. 汇川MD500变频器学习之路(一)
  19. CLRS 18.2B树上的基本操作
  20. Mac Win7虚拟机

热门文章

  1. shell脚本if参数太多_Shell脚本用for循环遍历参数的方法技巧
  2. reactor线程模型_从TCP服务器到I/O模型,带你学习Netty
  3. mysql 分词搜索_MySQL5.7分词全文检索思路
  4. 拜托!不要再问我是否了解多线程了好吗
  5. java基础系列:集合总结(4)
  6. lucene教程--全文检索技术详解
  7. 【深入Java虚拟机JVM 08】JVM四种引用-强引用、软引用、弱引用、虚引用
  8. No module named MNIST_写给小白的用fashion-mnist入门机器学习和深度学习的简单项目(非常全面!!!)...
  9. codeforces Educational Codeforces Round 49 (Rated for Div. 2) C题
  10. 网络爬虫初步:从一个入口链接开始不断抓取页面中的网址并入库