我有多个.dat文件,所有这些文件都以类似的信息开头,如观测时间、后期、长期和...。在该文本信息之后,有16列观测数据。它看起来像这样:
#Occultation start (UTC): 2022-01-01 00:10:00
#Occultation stop (UTC): 2022-01-01 00:12:04
#Occultation point latitude (degN): -59.5
#Occultation point longitude (degE): -54.6
#Center of curvature (m): 3264.126 -4599.850 27305.984
#Radius of curvature (m): 6382932.736
#Azimuth (degN): 177.809
#Undulation (m): 20.772
#Elevation (m): 0.000
#Processing method: Wave optics (CT2)
#Background data: ECMWF forecast
#Receiver data type: L1caL2c
#Navbit correction: extern
#Occultation type: Rising
#OL/CL mode: OL->CL
#Alt OL/CL (m): 8821
#alt w.r.t. EGM96
geoid|lat|lon|azimuth|ba_opt|impact_opt|refrac|dry_press|dry_temp|geopotential height|ba_raw|ba_L1|ba_L2|ba_model|snr_L1|snr_L2
0.000 -99999000.000 -99999000.000 -99999000.000 -0.99999E+08 -99999000.000 -0.99999E+08 -99999000.000 -99999000.000 -99999000.000 -0.99999E+08 -0.99999E+08 -0.99999E+08 -0.99999E+08 -99999000.000 -99999000.000
我想做的是:
迭代多个.dat文件,提取纬度和经度数据并绘制它们。我可以用一个文件做到这一点,但在循环中我得到了错误。这段代码可以提供最新和最长的信息,但在运行它之后,由于某些未知原因,我收到了一个错误:
f = open('/Users/file.dat','r')
data = f.read()
a = data.split
lat=a[14:15]
lon=a[19:20]
lat
TypeError Traceback (most recent call last)
<ipython-input-1-4f169d6b0f6f> in <module>
2 data = f.read()
3 a = data.split
----> 4 lat=a[14:15]
5
6 lon=a[19:20]
TypeError: 'builtin_function_or_method' object is not subscriptable
这是我的循环:
x=[]
y=[]
for file in pathlist:
with open (file, 'r') as input:
dataset= file.read()
a=dataset.split
lat=a[14:15]
lon=a[19:20]
dlat=x.append[lat]
dlon=y.append[lon]
我收到了这个错误:
AttributeError: 'str' object has no attribute 'read'
2条答案
按热度按时间mbyulnm01#
您忘记了调用该方法的方括号。您可以通过将一个值传递给
sep
参数(默认为空格)来指定拆分标准,详细信息请参阅文档。那么切片
a[14:15]
就有意义了,因此应该修复TypeError: 'builtin_function_or_method' object is not subscriptable
。要修复
AttributeError: 'str' object has no attribute 'read'
,您需要将read
方法应用于文件描述符,而不是文件名。[做影子内置函数的名字,input
是内置的!]plicqrtu2#
使用
re
,结果:
您可以使用
re
找到纬度和经度。拆分整个文件数据并根据位置找到值这可能很有可能获得错误的值。