免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2316 | 回复: 5
打印 上一主题 下一主题

新手请教以下两种代码有何不同? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-06-04 16:53 |只看该作者 |倒序浏览
  1. from sys import argv

  2. script, input_file = argv

  3. def print_all(f):

  4.     print f.read()

  5. def rewind(f):

  6.     f.seek(0)


  7. def print_a_line(line_count, f):

  8.     print line_count, f.readline()

  9. current_file = open(input_file)

  10. print 'First lets print the whole file:\n'

  11. print_all(current_file)

  12. print'Now lets rewind, kind of like a tape.'

  13. rewind(current_file)

  14. print 'Lets print three lines:'

  15. current_line = 1
  16. print_a_line(current_line,current_file)

  17. current_line = current_line+1
  18. print_a_line(current_line,current_file)

  19. current_line = current_line+1
  20. print_a_line(current_line,current_file)
复制代码
  1. from sys import argv

  2. script, input_file = argv

  3. print 'First lets print the whole file:\n'

  4. print open(input_file)

  5. print'Now lets rewind, kind of like a tape.'

  6. open(input_file).seek(0)

  7. print 'Lets print three lines:'

  8. current_line = 1
  9. print current_line, open(input_file).readline()

  10. current_line = current_line+1
  11. print current_line, open(input_file).readline()

  12. current_line = current_line+1
  13. print current_line, open(input_file).readline()
复制代码
PS:代码(2)是我看着代码(1)改编的,但是输出内容完全不同。请教论坛高手。问题可能比较幼稚才自学几天求轻拍

论坛徽章:
14
15-16赛季CBA联赛之辽宁
日期:2019-06-16 15:47:3515-16赛季CBA联赛之广夏
日期:2016-08-13 21:24:352015亚冠之武里南联
日期:2015-07-07 17:37:372015亚冠之萨济拖拉机
日期:2015-07-06 17:07:482015亚冠之全北现代
日期:2015-06-04 13:54:272015亚冠之城南
日期:2015-05-21 15:43:212015年亚洲杯之伊朗
日期:2015-04-25 18:20:362015年亚洲杯之伊朗
日期:2015-04-20 16:06:052015年亚洲杯之科威特
日期:2015-03-07 12:51:26丑牛
日期:2014-12-30 10:26:38申猴
日期:2014-09-28 22:40:18金牛座
日期:2014-09-13 21:12:22
2 [报告]
发表于 2015-06-04 17:22 |只看该作者
  1. print open(input_file)
复制代码
这open()返回的是一个对象

修改成
  1. print open(input_file).read()
复制代码
即可!

论坛徽章:
0
3 [报告]
发表于 2015-06-04 17:28 |只看该作者
修改的是代码(2)的第七行吗?可是修改完输出内容似乎也不太对。
用代码(1)输出的内容是:

1.mary

2.rose

3.peter

用代码(2)输出的内容是:
1.mary

2.mary

3.mary

不过还是谢谢!

回复 2# reb00t


   

论坛徽章:
14
15-16赛季CBA联赛之辽宁
日期:2019-06-16 15:47:3515-16赛季CBA联赛之广夏
日期:2016-08-13 21:24:352015亚冠之武里南联
日期:2015-07-07 17:37:372015亚冠之萨济拖拉机
日期:2015-07-06 17:07:482015亚冠之全北现代
日期:2015-06-04 13:54:272015亚冠之城南
日期:2015-05-21 15:43:212015年亚洲杯之伊朗
日期:2015-04-25 18:20:362015年亚洲杯之伊朗
日期:2015-04-20 16:06:052015年亚洲杯之科威特
日期:2015-03-07 12:51:26丑牛
日期:2014-12-30 10:26:38申猴
日期:2014-09-28 22:40:18金牛座
日期:2014-09-13 21:12:22
4 [报告]
发表于 2015-06-04 19:22 |只看该作者
  1. print 'Lets print three lines:'
  2. current_line = 1

  3. f = open(input_file)
  4. print current_line, f.readline()

  5. current_line = current_line+1
  6. print current_line, f.readline()

  7. current_line = current_line+1
  8. print current_line, f.readline()
复制代码
文件句柄 f 在每次调用完readline()函数后负责保持目前读到的当前位置,下次继续调用readline()的时候继续读取文件的下一行。

论坛徽章:
0
5 [报告]
发表于 2015-06-04 20:33 |只看该作者
知道问题出在哪里了,可能还是需要一点时间去消化理解,多谢!


回复 4# reb00t


   

论坛徽章:
26
2015亚冠之胡齐斯坦钢铁
日期:2015-06-25 21:40:202015亚冠之柏斯波利斯
日期:2015-08-31 17:03:192015亚冠之柏斯波利斯
日期:2015-11-07 13:10:00程序设计版块每日发帖之星
日期:2015-11-10 06:20:00每日论坛发贴之星
日期:2015-11-10 06:20:00程序设计版块每日发帖之星
日期:2015-11-26 06:20:00程序设计版块每日发帖之星
日期:2015-12-02 06:20:00黄金圣斗士
日期:2015-12-07 17:57:4615-16赛季CBA联赛之天津
日期:2015-12-23 18:34:14程序设计版块每日发帖之星
日期:2016-01-02 06:20:00程序设计版块每日发帖之星
日期:2016-01-06 06:20:00每日论坛发贴之星
日期:2016-01-06 06:20:00
6 [报告]
发表于 2015-06-04 21:25 |只看该作者
大师牛逼~
呵呵,也偷偷的学习一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP