设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: mty1111
打印 上一主题 下一主题

【Python 第33课】 处理文件中的数据

[复制链接]

0

主题

0

好友

215

积分

中级会员

Rank: 3Rank: 3

11#
发表于 2015-4-24 14:45:07 |只看该作者
  1. f = file('scores.txt')
  2. lines = f.readlines()
  3. f.close()

  4. results = []

  5. for line in lines:
  6.     #print line
  7.     data = line.split()
  8.     #print data

  9.     sum = 0
  10.     for score in data[1:]:
  11.         sum +=int(score)
  12.     result = '%s \t:%d\n' % (data[0],sum)
  13.     #print result

  14.     results.append(result)
  15. for i in results:
  16.     print i
  17.     output = file('result.txt','w')
  18.     output.writelines(results)
  19.     output.close
复制代码
为什么我的第一遍F5后只有一个空白的txt,多运行几遍才出来结果
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

12#
发表于 2015-4-24 15:30:43 |只看该作者
你最后一段有问题
每次都在循环里 writelines
也没有调用 close()
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

46

积分

新手上路

Rank: 1

13#
发表于 2015-12-9 16:27:59 |只看该作者
捕获.JPG
这为啥突然报了转型错误。。。。
回复

使用道具 举报

0

主题

0

好友

46

积分

新手上路

Rank: 1

14#
发表于 2015-12-9 16:38:36 |只看该作者
460883323 发表于 2015-12-9 16:27
这为啥突然报了转型错误。。。。

好吧,这个问题我把score。txt里面的一些字段删掉就没了,又变成这个错误:
捕获.JPG
回复

使用道具 举报

0

主题

0

好友

46

积分

新手上路

Rank: 1

15#
发表于 2015-12-9 20:42:06 |只看该作者
460883323 发表于 2015-12-9 16:38
好吧,这个问题我把score。txt里面的一些字段删掉就没了,又变成这个错误:
...

假如把报错这行放到sum的循环里面的话,就会不报错,但是生成的文件不对
捕获.JPG
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

16#
发表于 2015-12-9 21:23:04 |只看该作者
460883323 发表于 2015-12-9 20:42
假如把报错这行放到sum的循环里面的话,就会不报错,但是生成的文件不对
...

调试的时候,把每一步的结果print出来,看看是什么情况,哪里和预想的值不一样了
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

46

积分

新手上路

Rank: 1

17#
发表于 2015-12-9 22:40:51 |只看该作者
crossin先生 发表于 2015-12-9 21:23
调试的时候,把每一步的结果print出来,看看是什么情况,哪里和预想的值不一样了
...

恕我愚钝,不是很明白先生的意思。如果在 for score 这个循环里面添加print result的话,那么输出是一个累加过程,如果直接复制先生的代码运行的话,不知道为啥也会有报错,唯有这样改动下不报错,却出现一个名字重复出现两次的情况
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

18#
发表于 2015-12-10 21:34:19 |只看该作者
460883323 发表于 2015-12-9 22:40
恕我愚钝,不是很明白先生的意思。如果在 for score 这个循环里面添加print result的话,那么输出是一个 ...


data[0]那里报out of range,说明data有问题,你把每次的data都打印出来看是什么情况
应该是因为有空行,造成最后一个data是空的,空的data去取data[0]自然就有问题了
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

1

好友

273

积分

中级会员

Rank: 3Rank: 3

19#
发表于 2016-1-3 15:41:14 |只看该作者
crossin 老师,我想把txt文件保存在一个单独的文件夹里,于是去查了查相对路径怎么写,试着改了下,第一个地方通过了,为什么第二个地方总是有问题呢?
  1. f=file('.\data file\grades.txt')
  2. lines=f.readlines()
  3. print lines
  4. f.close

  5. results=[]

  6. for line in lines:
  7.     print line
  8.     data=line.split()
  9.     print data

  10.     sum=0
  11.     for score in data[1:]:
  12.         sum+=int(score)
  13.     result='%s\t:%d\n'%(data[0],sum)
  14.     print result
  15.    
  16.     results.append(result)

  17. print results
  18.    
  19. output=file('.\data file\result.txt','w')
  20. output.writelines(results)
  21. output.close
复制代码
后来我把创建第二个txt文件那里改成’result.txt',运行没有问题,但是创建的txt文件打开确实空的,不知道怎么回事,昨天“写文件”那课是正常的。今天又试了单独write,也不行。

Python17.png (15.7 KB, 下载次数: 339)

Python17.png

回复

使用道具 举报

0

主题

1

好友

273

积分

中级会员

Rank: 3Rank: 3

20#
发表于 2016-1-3 15:48:05 |只看该作者
catherinemic 发表于 2016-1-3 15:41
crossin 老师,我想把txt文件保存在一个单独的文件夹里,于是去查了查相对路径怎么写,试着改了下,第一个 ...

刚才发现单独write那个写进去了,writelines这个仍然不行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-4-20 03:28 , Processed in 0.027979 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部