失败任务定时删除

This commit is contained in:
2026-02-11 16:28:51 +08:00
parent b9828a1b13
commit af56c94efe
13 changed files with 782 additions and 169 deletions

View File

@ -85,7 +85,7 @@ try:
from .qiya import get_pressure_at_location
except ImportError as e:
print(f"❌ 导入qiya模块失败: {e}")
print(f"导入qiya模块失败: {e}")
print("请确保GasFlux包结构完整")
sys.exit(1)
@ -101,17 +101,18 @@ def load_excel_data(file_path):
pd.DataFrame: 读取的数据
"""
try:
print(f"正在读取文件: {file_path}")
print(f"正在读取Excel文件: {Path(file_path).name}")
# 读取Excel文件
df = pd.read_excel(file_path)
print(f"SUCCESS: Successfully loaded data: {len(df)} rows, {len(df.columns)} columns")
print(f"列名:{list(df.columns)}")
print(f" 数据读取成功: {len(df):,} 行 × {len(df.columns)} 列")
print(f" 检测到的列: {', '.join(df.columns[:5])}{'...' if len(df.columns) > 5 else ''}")
return df
except Exception as e:
print(f"ERROR: Failed to read file: {e}")
print(f" 文件读取失败: {Path(file_path).name}")
print(f" 错误详情: {e}")
sys.exit(1)
@ -126,7 +127,7 @@ def remove_columns(df, columns_to_remove):
Returns:
pd.DataFrame: 删除列后的DataFrame
"""
print(f"\n删除列: {columns_to_remove}")
print(f"\n 删除不需要的列: {columns_to_remove}")
# 检查要删除的列是否存在
existing_columns = [col for col in columns_to_remove if col in df.columns]
@ -174,7 +175,7 @@ def fix_time_column(df, filename):
Returns:
pd.DataFrame: 修正后的DataFrame
"""
print("修正时间格式...")
print(" 根据文件名修正时间格式...")
# 提取小时信息
hour_prefix = extract_hour_from_filename(filename)
@ -230,23 +231,23 @@ def convert_coordinates(df):
Returns:
pd.DataFrame: 转换后的DataFrame
"""
print("转换经纬度坐标...")
print(" 转换经纬度坐标(GPS原始数据除以10^7)...")
if 'stGPSPositionX' in df.columns:
original_lon = df['stGPSPositionX'].head(3).tolist()
df['stGPSPositionX'] = df['stGPSPositionX'] / 1e7
converted_lon = df['stGPSPositionX'].head(3).tolist()
print("经度转换示例:")
for orig, conv in zip(original_lon, converted_lon):
print(".6f")
print(" 经度转换示例:")
for i, (orig, conv) in enumerate(zip(original_lon, converted_lon)):
print(f" 第{i+1}行: {orig:.6f} → {conv:.6f}")
if 'stGPSPositionY' in df.columns:
original_lat = df['stGPSPositionY'].head(3).tolist()
df['stGPSPositionY'] = df['stGPSPositionY'] / 1e7
converted_lat = df['stGPSPositionY'].head(3).tolist()
print("纬度转换示例:")
for orig, conv in zip(original_lat, converted_lat):
print(".6f")
print(" 纬度转换示例:")
for i, (orig, conv) in enumerate(zip(original_lat, converted_lat)):
print(f" 第{i+1}行: {orig:.6f} → {conv:.6f}")
return df
@ -264,7 +265,7 @@ def calculate_pressure(df, max_samples=None, height_tolerance=10.0, height_bin_s
Returns:
pd.DataFrame: 添加气压列的DataFrame
"""
print("计算气压数据...")
print(" 计算气压数据(使用qiya.py大气模型)...")
# 检查必要列是否存在(支持原始列名和新列名)
# 原始数据中的列名
@ -554,11 +555,11 @@ def adjust_altitude(df):
Returns:
pd.DataFrame: 添加调整后高度字段的DataFrame
"""
print("创建调整后的高度字段...")
print("📏 创建调整后的高度字段...")
if 'fAltitudeFused' in df.columns:
min_altitude = df['fAltitudeFused'].min()
print(".2f")
print(f" 最小高度值: {min_altitude:.2f} 米")
# 创建新的调整后高度字段,而不是修改原始字段
df['height_ato'] = df['fAltitudeFused'] - min_altitude
@ -566,9 +567,11 @@ def adjust_altitude(df):
original_alt = df['fAltitudeFused'].head(3).tolist()
adjusted_alt = df['height_ato'].head(3).tolist()
print("高度调整示例:")
for orig, adj in zip(original_alt, adjusted_alt):
print(".2f")
print(" 高度调整示例:")
for i, (orig, adj) in enumerate(zip(original_alt, adjusted_alt)):
print(f" 第{i+1}行: {orig:.2f}m → {adj:.2f}m")
else:
print(" 未找到 'fAltitudeFused' 列,跳过高度调整")
return df
@ -583,7 +586,7 @@ def merge_timestamp(df):
Returns:
pd.DataFrame: 融合后的DataFrame
"""
print("融合日期和时间(修正时间格式)...")
print(" 融合日期和时间为时间戳...")
if 'qStrDate' in df.columns and 'qStrTime' in df.columns:
timestamps = []
@ -639,7 +642,7 @@ def rename_columns(df):
Returns:
pd.DataFrame: 重命名后的DataFrame
"""
print("重命名字段...")
print(" 重命名字段为GasFlux标准格式...")
# 定义字段映射
column_mapping = {
@ -681,7 +684,7 @@ def ensure_float64_types(df, config=None):
Returns:
pd.DataFrame: 数据类型转换后的DataFrame
"""
print("确保数值字段类型为float64...")
print(" 确保数值字段类型为float64(GasFlux要求)...")
# 定义基础需要转换为float64的字段
float64_columns = [
@ -726,7 +729,7 @@ def process_excel_file(file_path, config_path=None):
file_path: Excel文件路径
config_path: 配置文件路径,用于读取gases配置
"""
print(f"=== 开始处理文件: {file_path} ===\n")
print(f" === 开始处理文件: {Path(file_path).name} ===\n")
# 1. 读取数据
df = load_excel_data(file_path)
@ -767,10 +770,10 @@ def process_excel_file(file_path, config_path=None):
output_path = Path(file_path).with_suffix('.processed.csv')
df.to_csv(output_path, index=False, encoding='utf-8-sig')
print(f"\n处理完成!")
print(f"输出文件: {output_path}")
print(f"最终数据形状: {df.shape[0]} 行 × {df.shape[1]} 列")
print(f"最终列名: {list(df.columns)}")
print(f"\n 处理完成!")
print(f" 输出文件: {output_path}")
print(f" 最终数据: {df.shape[0]:,} 行 × {df.shape[1]} 列")
print(f" 最终字段: {', '.join(df.columns)}")
return df