Source code for get_list_input_files

"""Module for locating and listing input files.

This module provides functionality to locate and list sonic anemometer
and tracer gas analyzer data files based on configuration settings.
It supports:

- Multiple input directories
- Various file formats (HDF5, GHG, SLT)
- Date-based file filtering
- Recursive subdirectory scanning for tracer files

Author
------
B. Heinesch
University of Liege, Gembloux Agro-Bio Tech
"""

import os
from list_files_datestring import list_files_datestring


[docs] def get_list_input_files(ini): """Locate sonic anemometer and tracer gas analyzer data files. This function scans specified directories for input data files from sonic anemometers and tracer gas analyzers, filtering by file type, prefix, and date range. Parameters ---------- ini : dict Configuration dictionary containing: - files : dict File search parameters including: - sonic_files_folders : list Paths to search for sonic data - sonic_files_prefix : str Prefix for sonic filenames - tracer_files_folders : list Paths to search for tracer data - tracer_files_prefix : str Prefix for tracer filenames - tracer_files_suffix : str Suffix for tracer filenames - tracer_files_date_format : str Date format in tracer filenames - date_files_selection : str Date range for file filtering - sonic : dict Sonic configuration including: - sonic_files_type : str Type of sonic files ('hdf5', 'ghg', 'slt') Returns ------- tuple Two-element tuple containing: - sonic_files_list : dict Dictionary of sonic files with keys: - name : list Filenames - path : list Full paths to files - prefix : list File prefixes - date : list File dates - tracer_files_list : dict Dictionary of tracer files with same structure """ # get list of sonic input files in the given folder sonic_files_list = {'name': [], 'path': [], 'prefix': [], 'date': []} for n in range(len(ini['files']['sonic_files_folders'])): if ini['sonic']['sonic_files_type'] == 'hdf5': temp = list_files_datestring(ini['files']['sonic_files_folders'][n], ini['files']['sonic_files_prefix'], '.hdf5', 'yyyy_mm_dd__HH_MM_SS', ini['files']['date_files_selection'], sub_dir=False) elif ini['sonic']['sonic_files_type'] == 'ghg': temp = list_files_datestring(ini['files']['sonic_files_folders'][n], ini['files']['sonic_files_prefix'], '.ghg', 'yyyy-mm-ddTHHMMSS', ini['files']['date_files_selection'], sub_dir=False) elif ini['sonic']['sonic_files_type'] == 'slt': temp = list_files_datestring(ini['files']['sonic_files_folders'][n], ini['files']['sonic_files_prefix'], '.slt', 'xxx', ini['files']['date_files_selection'], sub_dir=False) for key in sonic_files_list: sonic_files_list[key] = sonic_files_list[key] + temp[key] # get list of tracer input files in the given folder (and its sub-folders) tracer_files_list = {'name': [], 'path': [], 'prefix': [], 'date': []} if ini['files']['tracer_files_folders']: for n in range(len(ini['files']['tracer_files_folders'])): temp = list_files_datestring(ini['files']['tracer_files_folders'][n], ini['files']['tracer_files_prefix'], ini['files']['tracer_files_suffix'], ini['files']['tracer_files_date_format'], ini['files']['date_files_selection'], sub_dir=True) for key in tracer_files_list: tracer_files_list[key] = tracer_files_list[key] + temp[key] else: for n in range(len(ini['files']['tracer_files'])): pathstr, name = os.path.split(ini['files']['tracer_files'])(n) tracer_files_list['name'] += name tracer_files_list['path'] += pathstr print('found ' + str(len(sonic_files_list['name'])) + ' sonic files and ' + str(len(tracer_files_list['name'])) + ' tracer files\n') return sonic_files_list, tracer_files_list