george021219's picture
Update app.py
75e8c4e verified
import os
import tarfile
import gradio as gr
def parse_packet_log(data, packet_log):
lines = packet_log.split("\n")
for line in lines:
if line.startswith("NO:"):
data.append(line.strip())
elif line.strip():
words = [line.replace(" ", "")[i:i+4] for i in range(0, len(line.replace(" ", "")), 4)]
data.append(words)
return data
def write_csv(data, output_file):
with open(output_file, "w") as f:
f.write(",,time,,,,,,,,,,,,,,,,,,,,,,,PI/sno,SA,DA,1W,,,,5W,,,,,10W,,,,,15W,,,,,20W,,,,,25W,,,,,30W,,,,,35W,,,,,40W,,,,,45W,,,,,50W,,,,,55W,,,,,60W,,,,,65W,,,,,70W,,,,,75W,,,,,80W,,,,,85W,,,,,90W,,,,,95W,,,,,100W")
for row in data:
if "NO" in row:
f.write("\n" + row + ",")
else:
f.write(",".join(row) + ",")
def process_files(files):
data = []
output_file = "GW_log.csv"
log_files = ["GTW_RV.log", "GTW_RV.bk0", "GTW_RV.bk1", "GTW_RV.bk2", "GTW_RV.bk3", "GTW_RV.bk4", "GTW_RV.bk5", "GTW_RV.bk6", "GTW_RV.bk7", "GTW_RV.bk8", "GTW_RV.bk9"]
for file in files:
with tarfile.open(file.name, "r:gz") as tar:
tar.extractall()
extracted_files = tar.getnames()
for log_file in log_files:
if log_file in extracted_files:
with open(log_file, 'r') as f:
packet_log = f.read()
data = parse_packet_log(data, packet_log)
write_csv(data, output_file)
return output_file
iface = gr.Interface(
fn=process_files,
inputs=gr.File(file_count="multiple"),
outputs=gr.File(),
title="Packet Log to CSV Converter",
description="Upload tgz files containing GTW_RV* files to convert them to a single CSV file."
)
if __name__ == "__main__":
iface.launch()