Python 3.x 如何在不列出所有时间(仅列出最终范围)的情况下将连续时间写入文本文件?

Python 3.x 如何在不列出所有时间(仅列出最终范围)的情况下将连续时间写入文本文件?,python-3.x,numpy,datetime,txt,Python 3.x,Numpy,Datetime,Txt,我目前正在将日期时间写入一个txt文件。目前看起来是这样的: 2021-01-01 06:52:00 , 2021-01-01 06:54:00 , 2021-01-01 06:55:00 , 2021-01-01 06:56:00 , 2021-01-01 06:57:00 , 2021-01-01 06:59:00 , 2021-01-01 07:01:00 , 2021-01-01 06:52:00 , 2021-01-01 06:52:00 2021-01-01 06:54:00 ,

我目前正在将日期时间写入一个txt文件。目前看起来是这样的:

2021-01-01 06:52:00 ,
2021-01-01 06:54:00 ,
2021-01-01 06:55:00 ,
2021-01-01 06:56:00 ,
2021-01-01 06:57:00 ,
2021-01-01 06:59:00 ,
2021-01-01 07:01:00 ,
2021-01-01 06:52:00 , 2021-01-01 06:52:00
2021-01-01 06:54:00 , 2021-01-01 06:59:00
2021-01-01 07:01:00 , 2021-01-01 07:01:00
for i in range(len(time_list_array)//2):
    text_file.write(f'{time_list_array[2*i]} , {time_list_array[2*i+1]}\n')
相反,我希望它显示为开始和结束时间的列表,如下所示:

2021-01-01 06:52:00 ,
2021-01-01 06:54:00 ,
2021-01-01 06:55:00 ,
2021-01-01 06:56:00 ,
2021-01-01 06:57:00 ,
2021-01-01 06:59:00 ,
2021-01-01 07:01:00 ,
2021-01-01 06:52:00 , 2021-01-01 06:52:00
2021-01-01 06:54:00 , 2021-01-01 06:59:00
2021-01-01 07:01:00 , 2021-01-01 07:01:00
for i in range(len(time_list_array)//2):
    text_file.write(f'{time_list_array[2*i]} , {time_list_array[2*i+1]}\n')
您可以看到,任何时候有连续时间,它都会显示范围(2021-01-01 06:54:00、2021-01-01 06:59:00),任何时候没有连续时间,它都会在“结束时间”列中重复时间

我的代码目前看起来是这样的,其中time_值只是xarray文件中的一个numpy时间数组:

        time_list_array = []
        for t in time_values:
            start_time = pd.to_datetime(str(t)).strftime(
                '%Y-%m-%d %H:%M:%S')
            time_list_array.append(start_time)

        #Write list of datetimes to txt file
        full_path = '/home/'
        if path.exists(full_path) is False:
            mkdir(full_path)
        with open(full_path+'.txt', 'a') as text_file:
            for t in time_list_array:
                text_file.write('%s ,\n' % t)

您在
中为t in time\u list\u数组打印的语句:
包括
'\n'
。这样每次都会创建一条新行。您希望在同一行上写入两个时间值,然后在末尾添加
'\n'
。您需要对循环和写入格式稍作修改。大概是这样的:

2021-01-01 06:52:00 ,
2021-01-01 06:54:00 ,
2021-01-01 06:55:00 ,
2021-01-01 06:56:00 ,
2021-01-01 06:57:00 ,
2021-01-01 06:59:00 ,
2021-01-01 07:01:00 ,
2021-01-01 06:52:00 , 2021-01-01 06:52:00
2021-01-01 06:54:00 , 2021-01-01 06:59:00
2021-01-01 07:01:00 , 2021-01-01 07:01:00
for i in range(len(time_list_array)//2):
    text_file.write(f'{time_list_array[2*i]} , {time_list_array[2*i+1]}\n')
注意:这假设您在时间列表数组中有偶数个条目

这是解决问题的另一种方法,使用
Odd
跟踪要使用的格式

with open('test_2.txt', 'w') as text_file:
    Odd = True
    for t in time_list_array:
        if Odd:
            text_file.write(f'{t}')
        else:
            text_file.write(f' , {t}\n')
        Odd = not(Odd) 

所需输出的第一行和最后一行仅显示输入的第一个和最后一个条目的副本。为什么?那么与numpy有什么关系呢?初始时间列表是温度超过60华氏度的所有实例的列表。数据只会每分钟收集一次,所以任何时候有连续的时间,我宁愿只显示一个范围(如所需输出的中间线)。我们仍然希望列出温度超过60华氏度的单个、单独的时间,但是需要一个开始和结束时间。因此,重复时间作为开始和结束日期是可以接受的。