【问题标题】:Python multi-file opening functionPython多文件打开功能
【发布时间】:2018-03-05 10:32:27
【问题描述】:

我有这部分代码,我使用input 命令创建了一个小模块,我可以在其中选择所需的文件。现在我需要通过添加一些循环来改进该模块吗?我猜。我需要的是:

  1. 第一个输入询问我来自哪个站点的数据,我使用快捷方式使其快速且有效。
  2. Station 之后我有Date 同样我输入所需的日期,如2015-07-19,这也可以正常工作。
  3. 这里有一些问题。我需要一个函数来获取所有数据,例如 1300 到 1500 (hhmm)。请注意,每个文件存储 5 分钟的数据,因此每个步骤是每 5 分钟一次。

我做了一个像 Start_timeEnd_time 这样的变量,但我不知道如何将它放入我的代码中。

总结: 我需要一个函数,它将从所需的时间间隔一个一个地打开文件。稍后在我的代码中有情节等,但我没有把它们放在这里让这个问题更清楚。

# Input variables
h = "Hylaty"
u = 'Hugo'
p = 'Patagonia'

Station = input('Enter a station name (Hylaty = h, Hugo = u, Patagonia = p): ')
Date = raw_input('Enter date time (yyyy-mm-dd): ')
Time = raw_input('Enter time (hh-mm): ')
Start_time = input('Enter start time: ')
End_time = input('Enter end time: ')


data = testInstance.convert(r"/Database/Python/Data/Willy/{0}/{1}/".format(Station,Date), "{0}{1}".format(Date,Time),conversionError)
end = time.time()
print("time elapsed " + str(end - start))

【问题讨论】:

  • 为什么要在inputraw_input之间切换?
  • 因为当我为我的站名创建“一个字母”变量时,当我引用我的路径文件时,raw_input 不知何故不起作用。

标签: python function loops input


【解决方案1】:

要生成时间范围,请使用pandas

import pandas as pd

my_ranges = pd.date_range('2015-07-19', '2015-07-20', freq='5S')

这个例子会输出:

In []: my_ranges
Out[]: 
DatetimeIndex(['2015-07-19 00:00:00', '2015-07-19 00:00:05',
           '2015-07-19 00:00:10', '2015-07-19 00:00:15',
           '2015-07-19 00:00:20', '2015-07-19 00:00:25',
           '2015-07-19 00:00:30', '2015-07-19 00:00:35',
           '2015-07-19 00:00:40', '2015-07-19 00:00:45',
           ...
           '2015-07-19 23:59:15', '2015-07-19 23:59:20',
           '2015-07-19 23:59:25', '2015-07-19 23:59:30',
           '2015-07-19 23:59:35', '2015-07-19 23:59:40',
           '2015-07-19 23:59:45', '2015-07-19 23:59:50',
           '2015-07-19 23:59:55', '2015-07-20 00:00:00'],
          dtype='datetime64[ns]', length=17281, freq='5S')

它可以通过索引访问,并且可以通过所有 pandas 方法进行切片,以便提取数据集中的并行范围。

【讨论】:

    【解决方案2】:
    Date = raw_input('Enter date time (yyyy-mm-dd): ')
    Start_time_hours = int(raw_input('Enter start time (hh): ' ))
    Start_time_minutes = int(raw_input('Enter start time (mm): ' ))
    End_time_hours = int(raw_input('Enter end time (hh): ' ))
    End_time_minutes = int(raw_input('Enter end time (mm): ' ))
    
    Start_time_hours += (Start_time_minutes / 60)
        Start_time_minutes %= 60
        str(Start_time_minutes)
        str(Start_time_hours)
        str(End_time_minutes)
        str(End_time_hours)
        Start_time_hours_format = '{:02}'.format(Start_time_hours)
        Start_time_minutes_format = '{:02}'.format(Start_time_minutes)
        End_time_hours_format = '{:02}'.format(End_time_hours)
        End_time_minutes_format = '{:02}'.format(End_time_minutes)
        int(Start_time_minutes)
        Start_time_minutes += 5
    

    这段代码解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-14
      • 1970-01-01
      相关资源
      最近更新 更多