- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
20:函数和文件
20 :函数和⽂件
练习20. 函数和⽂件
回忆⼀下函数的要点,然后⼀边做这节练习,⼀边注意⼀下函数和⽂件是如何在⼀起
协作发 作⽤的。
from sys import argv
script, input_file = argv
def print_all(f):
print f.read()
def rewind(f):
f.seek(0)
def print_a_line(line_count, f):
print line_count, f.readline()
current_file = open(input_file)
print First let s print the whole file:\n
print_all(current_file)
print Now let s rewind, kind of like a tape.
rewind(current_file)
print Let s print three lines:
current_line = 1
print_a_line(current_line, current_file)
current_line = current_line + 1
print_a_line(current_line, current_file)
current_line = current_line + 1
print_a_line(current_line, current_file)
特别注意⼀下,每次运⾏print_a_line时,我们是怎样传递当前的⾏号信息的。
你看到的结果
$ python ex20.py test.txt
First let s print the whole file:
This is line 1
This is line 2
This is line 3
Now let s rewind, kind of like a tape.
Let s print three lines:
1 This is line 1
2 This is line 2
3 This is line 3
附加题
1. 通读脚本,在每⾏之前加上注解,以理解脚本⾥发⽣的事情。
2. 每次print_a_line运⾏时,都传递了⼀个叫current_line的
变量。在每次调⽤函数时,打印出current_line的值,跟踪⼀
下它在print_a_line中是怎样变成line_count的。
3. 找出脚本中每⼀个⽤到函数的地⽅。检查def⼀⾏,确认参数没
有⽤错。
4 . 上⽹研究⼀下file中的seek函数是做什么⽤的。试着运
⾏pydoc file看看能不能学到更多。
5. 研究⼀下+=这个简写操作符的作⽤,写⼀个脚本,把这个操作符
⽤在⾥边试⼀下。
常见问题
Q:函数print_all中的f是什么?
f 就是⼀个变量,就好像在练习18中其他的变量⼀样,只不过这次它代
表了⼀个⽂件。 Python 中的⽂件就好像⽼旧的磁带驱动器,或者是像现
在的DVD播放器。它有⼀个 磁头 ,你可以在⽂件中查找到这个磁头
的位置,并且从那个位置开始运⾏。你每执⾏⼀次 f.seek(0),就靠
近⽂件的开头⼀点。每执⾏⼀次f.readline()你就从⽂件中读取⼀⾏
内容,并且把“磁头”移动到⽂件末尾,换⾏符\n的后⾯。继续学习本
书,你会看到更多的解释。
Q: ⽂件中为什么有3个空⾏?
函数 readline() 返回⼀⾏以\n结尾的⽂件内容, 在你调⽤print函数
的最后增加⼀个逗号, ,⽤来避免为每⼀⾏添加两个换⾏符\n。
Q:为什么seek(0)⽅ 没有把current_line的值修改为0 ?
⾸先,seek()⽅法是按字节⽽不是按⾏为处理单元的。代码seek(0)
重新定位在⽂件的第0位 (第⼀个字节处)。再次,current_line是
⼀个变量,在⽂件中没有真正的意义可⾔。我们是在⼿动的增加它的
值。
Q:+=是什么?
你应
您可能关注的文档
- 0.18工艺小规模嵌入式EEPROM存储阵列单Block电路.pdf
- (课件2)8.1幂的运算.ppt
- 02-离散谓词逻辑-1.6-1.7.ppt
- 03 宗教、哲学与科学的共同问题.pdf
- 06性质判断练习.ppt
- 1-6MM极限运算法则.pdf
- 05_LTE系统原理.pdf
- 1.吉林省第九届社科优秀成果奖暨省社科联第四次优秀成果奖申报表.doc
- 1.椭圆的几何性质(简单性质)第三课时.ppt
- 10.4最小二乘优化问题.pdf
- 初中数学反思性学习在促进学生数学思维品质提升中的应用教学研究课题报告.docx
- 纸雕课程在小学艺术教育中的立体思维启发路径教学研究课题报告.docx
- 6 《老旧建筑加固改造中的结构性能分析与加固效果评估研究》教学研究课题报告.docx
- 中小学生心理健康教育评价体系构建与实施策略研究教学研究课题报告.docx
- 小学古籍修复课程中的工匠精神培育研究教学研究课题报告.docx
- 小学音乐课堂中融合世界音乐文化的实践策略研究教学研究课题报告[001].docx
- 初中数学问题解决教学中批判性思维的培养策略研究教学研究课题报告.docx
- 职业中学学生生涯规划指导中的职业信息获取与利用研究教学研究课题报告.docx
- 初中语文古诗文意境体验活动的设计与实验研究教学研究课题报告.docx
- 孝感市八校联谊重点达标名校2025届中考生物考试模拟冲刺卷含解析.doc
文档评论(0)