网站大量收购独家精品文档,联系QQ:2885784924

20:函数和文件.pdf

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

hhuiws1482 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档