|
|
|
|
 打开文件后怎样才能对里边的数据进行处理? - happyhappy [ 2005-06-21 18:10 | 642 byte(s)]
 Re: 打开文件后怎样才能对里边的数据进行处理? - limodou [ 2005-06-21 22:01 | 948 byte(s)]
 Re: 打开文件后怎样才能对里边的数据进行处理? - passworld [ 2005-06-21 19:58 | 860 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
我总是没有思路,.比如说这样一个dat文件,
0 4.1 18.9 21
1 4.91 10 32
2 4.67 4.1 33
3 4.38 -1.8 33
4 4.03 -7.8 35
5 3.67 -13.8 33
6 4.07 -17.8 26
7 3.22 24.6 30
f=open("spr.dat","r")
我的目的是把这个文件里的第2列和第三列相加后,写成一个二进制文件.不明白怎样就算把每一列分开了,是不是用split()还是什么?我看书上介绍的都是与文件没有联系的,不是从文件里读的,而是直接给出的数据或字符串,所以联系到实际就联系不起来了.我学其他语言的时候也是这种问题,所以一定要解决这个问题,否则好多都处理不了,真是个大麻烦. 所以请教各位了.拜托了!
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
文件的储存在视觉上都是一行,一行的,所以你即使想读入一列,一列,也是先一行一行的读入,然后把他们转成一列,一列的。也就是把每行的第一个值存在一个list里,第二个存到另一个list,... 然后重复下一行。
电脑程序其实就是把复杂的工作,转变成愚蠢的循环,让电脑去重复这些循环。要是让人脑去做,早就把人烦死了,所以我们用电脑做这个工作,所以现在电脑标榜自己能每秒重复多少兆多少兆的愚蠢循环。电脑比人脑蠢,但他不会被大量的重复,循环烦死。
这就是电脑编程的真谛,你掌握了,用什么语言都一样。千万别想着这个问题肯定有窍门解决,其实越是窍门越复杂。要有坚定的信念:电脑是愚蠢的!让它做简单的循环!
编程是一种初三毕业就可以胜任的工作,但你必须有耐心。前一段时间不是流传着印度编软件的人也就是高中生水平吗?我觉着很正常,全世界都这样,也应该这样。
算法设计,程序整体设计就是另外一回事了。
|
|
|
----
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
首先分析一下你的需求:
有一个文件存有几列数据,要求将每列某些列的数据取出来相加后,另存为一个文件。
那么如果我做这个程序会这样:
打开数据文件
打开结果文件
对文件进行循环读,一次读出一行
将读出的一行以空白进行分割形成多列
将第二行与第三列相加后写入结果文件
关闭数据文件
关闭结果文件
翻译成程序为:
f = file('spr.dat')
w = file('out.dat', 'wb')
for line in f:
v = line.split()
w.write(str(float(v[1]) + float(v[2])))
f.close()
w.close()
上面的程序还存在问题。那就是我对你所说的二进制需求不清楚。还有就是对浮点数精度的要求。上面的程序都没有考虑这些问是。需要进行细化。
如果是真正的二进制需要了解struct模块。如果是解决浮点精度使用"%.2f" % f即可以。不过生成的结果并不是二进制的,而是ascii形式的。
|
|
|
----
|
|
[Original]
[Print]
[Top]
|
|
|