RajMl's picture
Upload 23 files
1295ae5 verified
import os
import pandas as pd
import streamlit as st
import csv
from aux_functions import *
def handle_file_upload(upload_dir='data', aux_data_folder='aux_data'):
"""
Handles the file upload, storage, and extraction of column names.
Stores the file name and column names in an auxiliary text file.
Parameters:
upload_dir (str): The directory to store uploaded files.
aux_file (str): The name of the auxiliary text file to store file name and column names.
Returns:
file_name (str): The name of the uploaded file.
column_names (list): The list of column names in the uploaded file.
"""
# Create the directory if it doesn't exist
if not os.path.exists(upload_dir):
os.makedirs(upload_dir)
# File uploader
uploaded_file = st.file_uploader("Choose a file", type=['csv', 'xlsx'])
if uploaded_file is not None:
# Store file in the specified directory
# clean_data_folder()
file_name = uploaded_file.name
file_path = os.path.join(upload_dir, file_name)
for filename in os.listdir(upload_dir):
file_path_existing = os.path.join(upload_dir, filename)
if os.path.isfile(file_path_existing) and filename != file_name:
os.remove(file_path_existing)
# st.write(f"Deleted: {file_path_existing}")
with open(file_path, "wb") as f:
f.write(uploaded_file.getbuffer())
st.success(f"File {file_name} saved successfully!")
# Read the file and get column names
if file_name.endswith('.csv'):
df = pd.read_csv(file_path)
else:
df = pd.read_xml(file_path)
column_names = df.columns.tolist()
if not os.path.exists(aux_data_folder):
os.makedirs(aux_data_folder)
# Define the filenames for the text files
file_name_filename = os.path.join(aux_data_folder, "file_name.txt")
column_names_filename = os.path.join(aux_data_folder, "column_names.txt")
# Write file name to its respective text file
with open(file_name_filename, "w") as file_name_file:
file_name_without_extension = file_name.rsplit('.', 1)[0]
file_name_file.write(file_name_without_extension)
# Write column names to its respective text file
with open(column_names_filename, "w") as column_names_file:
for col in column_names:
column_names_file.write(col + "\n")
st.markdown("## File upload Successful, Click on 'Go to next Menu' to proceed forward ")
return file_name, column_names
else:
st.info("Please upload a file")
return None, None