URN Logo
UNIX Resources » Linux » China Linux Forum » Python 编 程 » 8 » 打开文件后怎样才能对里边的数据进行处理?
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
打开文件后怎样才能对里边的数据进行处理?
 
 
 
Subject: 打开文件后怎样才能对里边的数据进行处理?
Author: happyhappy    Posted: 2005-06-21 18:10    Length: 642 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]
Subject: Re: 打开文件后怎样才能对里边的数据进行处理?
Author: passworld    Posted: 2005-06-21 19:58    Length: 860 byte(s)
[Original] [Print] [Top]
文件的储存在视觉上都是一行,一行的,所以你即使想读入一列,一列,也是先一行一行的读入,然后把他们转成一列,一列的。也就是把每行的第一个值存在一个list里,第二个存到另一个list,... 然后重复下一行。

电脑程序其实就是把复杂的工作,转变成愚蠢的循环,让电脑去重复这些循环。要是让人脑去做,早就把人烦死了,所以我们用电脑做这个工作,所以现在电脑标榜自己能每秒重复多少兆多少兆的愚蠢循环。电脑比人脑蠢,但他不会被大量的重复,循环烦死。

这就是电脑编程的真谛,你掌握了,用什么语言都一样。千万别想着这个问题肯定有窍门解决,其实越是窍门越复杂。要有坚定的信念:电脑是愚蠢的!让它做简单的循环!

编程是一种初三毕业就可以胜任的工作,但你必须有耐心。前一段时间不是流传着印度编软件的人也就是高中生水平吗?我觉着很正常,全世界都这样,也应该这样。

算法设计,程序整体设计就是另外一回事了。

----
[Original] [Print] [Top]
Subject: Re: 打开文件后怎样才能对里边的数据进行处理?
Author: limodou    Posted: 2005-06-21 22:01    Length: 948 byte(s)
[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]
« Previous thread
[精华] 这四个盒子该如何摆放?一道简单的算法题(有解法)。
Python 编 程
8
Next thread »
请教一下split()是如何用的.
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 04:11:10, cost 0.037377119064331 ms.