sqlite 读取多个.dat文件并提取特定信息

bprjcwpo  于 2022-11-14  发布在  SQLite
关注(0)|答案(2)|浏览(243)

我有多个.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'
mbyulnm0

mbyulnm01#

您忘记了调用该方法的方括号。您可以通过将一个值传递给sep参数(默认为空格)来指定拆分标准,详细信息请参阅文档。

a = data.split()

那么切片a[14:15]就有意义了,因此应该修复TypeError: 'builtin_function_or_method' object is not subscriptable
要修复AttributeError: 'str' object has no attribute 'read',您需要将read方法应用于文件描述符,而不是文件名。[做影子内置函数的名字,input是内置的!]

for file in pathlist:
    with open (file, 'r') as fd:   
        dataset = fd.read()
plicqrtu

plicqrtu2#

使用re

import re

for file in pathlist:
    with open (file, 'r') as fp:
        lines = fp.readlines()
        latitude = re.match(r'.* ([-\.\d]+)', lines[2]).group(1)
        longitude = re.match(r'.* ([-\.\d]+)', lines[3]).group(1)
        print(latitude, longitude)

结果:

-59.5 -54.6

您可以使用re找到纬度和经度。拆分整个文件数据并根据位置找到值这可能很有可能获得错误的值。

相关问题