-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstreamlit_folder_select.py
59 lines (51 loc) · 2.15 KB
/
streamlit_folder_select.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import streamlit as st
import os
from pathlib import Path
st.set_page_config(layout = 'wide')
def folder_selector():
if 'curr_directory' not in st.session_state:
st.session_state['curr_directory'] = os.path.abspath('.')
st.session_state['dir_list'] = \
next(os.walk(st.session_state['curr_directory']))[1]
files = \
[file for file in os.listdir(st.session_state['curr_directory'])
if os.path.isfile(os.path.join(st.session_state['curr_directory'], file))]
curr_dir_abs_path = os.path.abspath(st.session_state['curr_directory'])
st.session_state['dir_list'] = next(os.walk(st.session_state['curr_directory']))[1]
st.session_state['dir_list'] = sorted(st.session_state['dir_list'])
st.session_state['dir_list'].insert(0,'.')
st.session_state['dir_list'].insert(1,'..')
st.markdown(
f"**<font size=5>Currently in: {curr_dir_abs_path} </font>**",
unsafe_allow_html=True,
)
option = st.selectbox(
'Select Data folder', st.session_state['dir_list'],
key='Folder_selector',index=0
)
if st.button('Change directory'):
if option == '.':
pass
elif option == '..':
path = Path(st.session_state['curr_directory'])
st.session_state['curr_directory'] = \
str(path.parent.absolute())
st.session_state['dir_list'] = \
next(os.walk(st.session_state['curr_directory']))[1]
else:
st.session_state['curr_directory'] = \
os.path.abspath(
os.path.join(
st.session_state[
'curr_directory'], option))
st.session_state['dir_list'] = \
next(os.walk(st.session_state['curr_directory']))[1]
st.experimental_rerun()
st.markdown(
f'**<font size=5>No. of files in the selected folder:'
f'{len(files)} </font>**',
unsafe_allow_html=True,
)
st.write(os.listdir(st.session_state['curr_directory']))
if __name__=='__main__':
file_selector()