文件分类与提取

发布时间 2024-01-12 16:57:21作者: IsYuh

'''
按照文件夹名称的时间来获取需要的数据
文件夹名称eg./home/yuh/WRFCHEM/WPS-4.5/1km/2019010100_2019010900
'''
import os
import pandas as pd
from datetime import datetime
import shutil

按照一定的时间间隔,创建一个时间段内的时间列表

def generate_dates_from_filename(filename):
start_time = datetime.strptime(filename.split('')[0], '%Y%m%d%H').strftime('%Y-%m-%d')
end_time = datetime.strptime(filename.split('
')[1], '%Y%m%d%H').strftime('%Y-%m-%d')
return pd.date_range(start_time, end_time, freq='1H').strftime('%Y-%m-%d_%H')

复制文件

def copy_files_for_date_range(met_dir, target_dir, date_range):
met_files = os.listdir(met_dir)
for met_file in met_files:
if 'met_em' in met_file and met_file.split('.')[2].split('?[0] in date_range:
original_file = os.path.join(met_dir, met_file)
new_file = os.path.join(target_dir, met_file)
shutil.copyfile(original_file, new_file)
print(f"File {met_file} copied to {target_dir}")

将特定文件分别复制到 有多个包含时间的文件夹中

def process_files_in_directory(target_dir, met_dir):
files = os.listdir(target_dir)
for file in files:
dates = generate_dates_from_filename(file)
target_file=os.path.join(target_dir,file)
copy_files_for_date_range(met_dir, target_file, dates)

复制分类后删除原文件夹中的文件

def delete_files(met_dir):
met_files = [f for f in os.listdir(met_dir) if f.startswith("met_em")]
for met_file in met_files:
file_path = os.path.join(met_dir, met_file)
try:
os.remove(file_path)
print(f"File {met_file} deleted from {met_dir}")
except Exception as e:
print(f"Error deleting {met_file}: {e}")

target_dir = '/home/yuh/WRFCHEM/WPS-4.5/1km'
met_dir = '/home/yuh/WRFCHEM/WPS-4.5'
process_files_in_directory(target_dir, met_dir)

delete_files(met_dir)#删除wps目录下met_em文件