微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在for循环中打印数据间隔如果为else语句? Python问题

如何解决如何在for循环中打印数据间隔如果为else语句? Python问题

大家好!我读了一个CDF文件,里面有卫星在轨道上的日期,时间,纬度和经度。我正在尝试编写一个txt文件,以便每次卫星在北极站上盘旋时都会保存数据(我的LAT和LON的错误值很小)。

我设法在适当的条件下保存了txt文件,但这是查看和输出以下数据的方式:

2013-01-09 02:05:00 -57.097008 40.165134

2013-01-09 02:06:00 -57.29849 40.504826

2013-01-09 02:07:00 -57.49554 40.834732

2013-01-09 02:08:00 -57.68884 41.154243

2013-01-09 02:09:00 -57.881386 41.45857

数年的数据等于处理太多的方法...本质上,我想找到一种方法显示时间间隔的代码。因此,与其说是一分钟一分钟,不如说是

2013-09-01 02:00:00〜2013-09-01 02:14:00

2013-10-05 04:23:00〜2013-10-05 04:32:00

我使用的代码是:

From spacepy import cdf
import datetime
from numpy import *
import numpy as np

cdf = pycdf.CDF('/directory/file.cdf')
print(cdf)


TIME = cdf['EPOCH']
LAT = cdf['SouthBtrace_GM_LAT']
LON = cdf['SouthBTrace_GM_LON']    

#Loop Count
count = 0
    
with open("example.txt","a") as testing:
    for i,j in zip(LAT,LON):
        if(-65.26 <= i <= -59.26 and 32.31 <= j <= 52.31):            
            count +=1
            n = count
            testing.write(str(TIME[n-1])+'\t'+str(i)+'\t'+str(j)+ '\n')
               
           
        else:
            count +=1

很抱歉,如果我的问题令人困惑。我是编程新手,也从未使用过stackoverflow。

编辑:

>> type(TIME[0])
   datetime.datetime

解决方法

好吧,我的想法是,您添加一个时间参数和一个附加的“ if”条件,只有在时差足够大(10分钟或15分钟,或您想要的任何时间)时才能满足。因此,就像:

import datetime
delta = datetime.timedelta(seconds = 600) ## the time gap that you want to use
time_one = datetime.datetime(2020,9,16,5,26,0) ## some arbitrary starting value
with open("example.txt","a") as testing:
    for i,j in zip(LAT,LON):
        if(-65.26 <= i <= -59.26 and 32.31 <= j <= 52.31):
            if TIME > time_one + delta: 
                count +=1
                n = count
                testing.write(str(TIME[n-1])+'\t'+str(i)+'\t'+str(j)+ '\n')
                time_one = TIME  ## resets the time_one value to the new time
        else:
            count +=1

这样,除非时间值至少比前一个写入时间晚600秒(假设EPOCH值以秒为单位……如果不是,显然使用适当的单位),则不会将新数据写入txt文件。项。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。