找回密码
 注册
Simdroid-非首页
查看: 265|回复: 7

[3. Fortran] 怎样读取这个索要列的文件的数据?

[复制链接]
发表于 2005-6-27 10:12:35 | 显示全部楼层 |阅读模式 来自 山西大同
文件格式如下:
Tracer particle file
   26   16
       x       y       z      vx      vy      vz
      sx      sy      sz     sxy     syz     szx
     efp     rho    rvol  active
  0.51806E-01
  0.00000E+00  0.00000E+00  0.50000E+01  0.00000E+00  0.00000E+00  0.00000E+00
-0.11880E+00 -0.11880E+00 -0.11880E+00  0.00000E+00  0.00000E+00  0.00000E+00
  0.10000E+01  0.17170E+01  0.00000E+00  0.39781E+05
  0.00000E+00  0.00000E+00  0.60000E+01  0.00000E+00  0.00000E+00  0.00000E+00
-0.11880E+00 -0.11880E+00 -0.11880E+00  0.00000E+00  0.00000E+00  0.00000E+00
  0.10000E+01  0.17170E+01  0.00000E+00  0.41901E+05
  0.00000E+00  0.00000E+00  0.70000E+01  0.00000E+00  0.00000E+00 -0.80578E-08
-0.11880E+00 -0.11880E+00 -0.11880E+00  0.00000E+00  0.00000E+00  0.00000E+00
  0.10000E+01  0.17170E+01  0.00000E+00  0.36869E+05
0.10014E+01
  0.00000E+00  0.00000E+00  0.50000E+01  0.00000E+00  0.00000E+00  0.29901E-02
-0.40473E-01 -0.40473E-01 -0.40473E-01  0.00000E+00  0.00000E+00  0.00000E+00
  0.10000E+01  0.17170E+01  0.00000E+00  0.39781E+05
  0.00000E+00  0.00000E+00  0.60000E+01  0.00000E+00  0.00000E+00  0.15986E-02
-0.43063E-01 -0.43063E-01 -0.43063E-01  0.00000E+00  0.00000E+00  0.00000E+00
  0.10000E+01  0.17170E+01  0.00000E+00  0.41901E+05
  0.00000E+00  0.00000E+00  0.70000E+01  0.00000E+00  0.00000E+00 -0.15985E-02
-0.43063E-01 -0.43063E-01 -0.43063E-01  0.00000E+00  0.00000E+00  0.00000E+00
  0.10000E+01  0.17170E+01  0.00000E+00  0.36869E+05
·····················
我要读取的是SZ列的数据存到矩阵里,因为文件数据不是很规则,有些行只有一列数据!望大家帮忙,等着作毕业论文!谢谢各位高手呢!
发表于 2005-7-1 11:28:20 | 显示全部楼层 来自 黑龙江哈尔滨

Re:怎样读取这个索要列的文件的数据?

Simdroid开发平台
一段python代码
  1. #! /usr/bin/env python
  2. import os,sys
  3. ifile = sys.argv[1]; ofile = sys.argv[2]
  4. finp = open(ifile,'r'); fout = open(ofile,'w')
  5. lines = finp.readlines()
  6. for line in lines:
  7.     if len(line.split()) > 2:
  8.     foo = line.split()[2]
  9.     fout.write(foo + '\n')
  10.   
  11. finp.close(); fout.close()
复制代码
  1. d:\test.py inputfile outputfile
  2. d:\type outputfile
  3. 0.50000E+01
  4. -0.11880E+00
  5. 0.00000E+00
  6. 0.60000E+01
  7. -0.11880E+00
  8. 0.00000E+00
  9. 0.70000E+01
  10. -0.11880E+00
  11. 0.00000E+00
  12. 0.50000E+01
  13. -0.40473E-01
  14. 0.00000E+00
  15. 0.60000E+01
  16. -0.43063E-01
  17. 0.00000E+00
  18. 0.70000E+01
  19. -0.43063E-01
  20. 0.00000E+00
复制代码
 楼主| 发表于 2005-7-1 15:25:56 | 显示全部楼层 来自 山西大同

Re:怎样读取这个索要列的文件的数据?

谢谢呢!
我试一下。
发表于 2005-7-4 18:52:04 | 显示全部楼层 来自 黑龙江哈尔滨

Re:怎样读取这个索要列的文件的数据?

原来苍山负雪是舞蛇高手啊,
真是失敬
发表于 2005-7-5 15:37:09 | 显示全部楼层 来自 黑龙江哈尔滨

Re:怎样读取这个索要列的文件的数据?

/blush 我只是初学者,献丑献丑。violetwind 多多指教
发表于 2005-7-8 15:25:10 | 显示全部楼层 来自 北京

Re:怎样读取这个索要列的文件的数据?

能不能解释一下?
直接把这段程序放到fortran命令中吗?
楼主试验后怎么样?
苍山负雪 wrote:
一段python代码
  1. #! /usr/bin/env python
  2. import os,sys
  3. ifile = sys.argv[1]; ofile = sys.argv[2]
  4. finp = open(ifile,'r'); fout = open(ofile,'w')
  5. lines = finp.readlines()
  6. for line in lines:
  7.     if len(line.split()) > 2:
  8.     foo = line.split()[2]
  9.     fout.write(foo + '\n')
  10.   
  11. finp.close(); fout.close()
复制代码
  1. d:\test.py inputfile outputfile
  2. d:\type outputfile
  3. 0.50000E+01
  4. -0.11880E+00
  5. 0.00000E+00
  6. 0.60000E+01
  7. -0.11880E+00
  8. 0.00000E+00
  9. 0.70000E+01
  10. -0.11880E+00
  11. 0.00000E+00
  12. 0.50000E+01
  13. -0.40473E-01
  14. 0.00000E+00
  15. 0.60000E+01
  16. -0.43063E-01
  17. 0.00000E+00
  18. 0.70000E+01
  19. -0.43063E-01
  20. 0.00000E+00
复制代码
发表于 2005-7-9 11:17:12 | 显示全部楼层 来自 黑龙江哈尔滨

Re:怎样读取这个索要列的文件的数据?

关于python请搜索一下本版,以前贴过一篇介绍。

不过不能直接在fortran里面用啦。需要安装python的解释器。

让python读入文件后,每一行数据表示成一个字符串。把字符串用空格劈开,形成多个字符串,如果多于两个字符串,那就保留第三个字符串,很简单的。
发表于 2005-7-9 17:07:35 | 显示全部楼层 来自 北京

Re:怎样读取这个索要列的文件的数据?

有时间看来要学一下,好像比用fortran 提取数据简单些吧.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-11-2 01:31 , Processed in 0.039890 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表