爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 14741|回复: 8

[求助] Python读取文本文件的方法问题

[复制链接]

新浪微博达人勋

发表于 2016-10-13 17:41:48 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
初学python,靠论坛和格点气象朱学霸。比较倔强,坚持没有装python集成开发环境,就一个py27,包都是pip装的。
目前有的安装包:numpy,netcdf,matplotlib
我遇到的困难:
我要读取的文件是.dat ,如图
前四行是文件描述信息,不需要读取,直接读入后面的数据(241*161)

我现在用的土方法是手动删除前四行,后面利用np的函数:
  1. data=np.genfromtxt(path_name+title+'.dat')  #吓撞的genfromtxt函数
  2. a=data.reshape((161,241))
复制代码
这样就可以纯数组运算了


各位老司机,叫我更自动化的方法吧







微信截图_20161013173042.png

数据格式

数据格式
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-10-13 19:24:24 | 显示全部楼层
参考这里:http://docs.scipy.org/doc/numpy/ ... ml#numpy.genfromtxt

注意skip_header参数
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-10-14 11:26:43 | 显示全部楼层
MeteoInfo 发表于 2016-10-13 19:24
参考这里:http://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html#numpy.genfromtxt ...

感谢老司机,我太粗心,没看到
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-7 11:31:23 | 显示全部楼层
ValueError                                Traceback (most recent call last)
<ipython-input-38-297e1490ce83> in <module>()
      3 path_name='d:/pdata/'
      4 title='16103020.0066'
----> 5 a=np.genfromtxt(fname=path_name+title,skip_header=3)
      6 #file = open(path_name+title,'r')
      7 #lineNum = 0

D:\anaconda2.4.2.0\lib\site-packages\numpy\lib\npyio.pyc in genfromtxt(fname, dtype, comments, delimiter, skip_header, skip_footer, converters, missing_values, filling_values, usecols, names, excludelist, deletechars, replace_space, autostrip, case_sensitive, defaultfmt, unpack, usemask, loose, invalid_raise, max_rows)
   1767             # Raise an exception ?
   1768             if invalid_raise:
-> 1769                 raise ValueError(errmsg)
   1770             # Issue a warning ?
   1771             else:

ValueError: Some errors were detected !
    Line #6 (got 161 columns instead of 13)
    Line #8 (got 161 columns instead of 13)
    Line #10 (got 161 columns instead of 13)
    Line #12 (got 161 columns instead of 13)

可我这个加了skip_header之后读数据就一直报这个错误,是为什么呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-7 11:35:30 | 显示全部楼层
如果不用gen_fromtxt的话读取前四行是这样,就是ec细网格的降水
Untitled1.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-7 12:13:29 来自手机 | 显示全部楼层
老师能帮我看看吗
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-11-7 13:44:45 | 显示全部楼层
zgzggzgz 发表于 2016-11-7 12:13
老师能帮我看看吗

兄弟你好,你说的这个问题我也遇到过,大致意思是:np.genfromtxt读文件的方法会将文件直接读取成数组,这也就要求文件行列数要正规,每行的数据个数不能变。micaps第四类数据有些是一行的数据个数就是一个纬度的所有数据,如.dat类型文件。这类是比较适合用genfromtxt读的。但有些类型则是固定列数,比如你的文件行列都是161,假设固定每行10个数据,那么第17行只有一个值,18行开始又是新的一个纬度。这时函数读到第17行时就会报错。我也没有想到更好的解决方案。
回到你的具体问题,我大概数了数,你开始读的第一行还是在文件头信息,是0.12500....这一行。
你先把skip_header的参数换成4或者6试一试(我看不清中间是不是空了一行),加我qq联系:1006535320
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-7 14:27:51 | 显示全部楼层
方自之 发表于 2016-11-7 13:44
兄弟你好,你说的这个问题我也遇到过,大致意思是:np.genfromtxt读文件的方法会将文件直接读取成数组, ...

16103020.006 (67.18 KB, 下载次数: 0)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-7 15:13:30 | 显示全部楼层
本帖最后由 zgzggzgz 于 2016-11-7 15:15 编辑

在楼主的建议下吧skip_header改成6,居然神奇地一切正常了。不知道是为什么。
1111.png
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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