Streamlit 上传 CSV 文件,解析并推送到 FTP
Streamlit upload CSV file, parse it and push it to FTP
我正在尝试构建一个简单的 Streamlit 应用程序,我正在上传一个 CSV 文件,然后将其加载到数据框中,显示数据框,然后将其上传到预定义的 FTP 服务器。
第一部分工作正常,文件已成功上传并可视化,但我无法将其上传到 FTP 服务器。这是我的代码:
import ftplib
import pandas as pd
import streamlit as st
ftp_server = "ftp.test.com"
ftp_username = "user"
ftp_password = "password"
input_file = st.file_uploader("Upload a CSV File",type=['csv'])
if (input_file is not None) and input_file.name.endswith(".csv"):
df = pd.read_csv(input_file, delimiter="\t", encoding = 'ISO-8859-1')
st.dataframe(df)
session = ftplib.FTP(ftp_server, ftp_username, ftp_password)
file = open(input_file, "rb")
session.storbinary(input_file.name, input_file)
input_file.close()
session.quit()
st.success(f"The {input_file.name} was successfully uploaded to the FTP server: {ftp_server}!")
我收到一个错误
TypeError: expected str, bytes or os.PathLike object, not UploadedFile.
我正在使用 Streamlit v.1.1.0。
请注意,我已经简化了我的代码并替换了 FTP 凭据。在现实世界中,我可能会使用 try/except
进行会话连接等
我想你在这里得到了错误:
file = open(input_file, "rb")
该行既错误又无用(您永远不会使用 file
)。删除它。
您可能需要在 read_csv
中阅读 input_file
回到开头:
file_input.seek(0)
您缺少上传命令 (STOR
) storbinary
调用:
session.storbinary("STOR " + input_file.name, input_file)
我正在尝试构建一个简单的 Streamlit 应用程序,我正在上传一个 CSV 文件,然后将其加载到数据框中,显示数据框,然后将其上传到预定义的 FTP 服务器。
第一部分工作正常,文件已成功上传并可视化,但我无法将其上传到 FTP 服务器。这是我的代码:
import ftplib
import pandas as pd
import streamlit as st
ftp_server = "ftp.test.com"
ftp_username = "user"
ftp_password = "password"
input_file = st.file_uploader("Upload a CSV File",type=['csv'])
if (input_file is not None) and input_file.name.endswith(".csv"):
df = pd.read_csv(input_file, delimiter="\t", encoding = 'ISO-8859-1')
st.dataframe(df)
session = ftplib.FTP(ftp_server, ftp_username, ftp_password)
file = open(input_file, "rb")
session.storbinary(input_file.name, input_file)
input_file.close()
session.quit()
st.success(f"The {input_file.name} was successfully uploaded to the FTP server: {ftp_server}!")
我收到一个错误
TypeError: expected str, bytes or os.PathLike object, not UploadedFile.
我正在使用 Streamlit v.1.1.0。
请注意,我已经简化了我的代码并替换了 FTP 凭据。在现实世界中,我可能会使用 try/except
进行会话连接等
我想你在这里得到了错误:
file = open(input_file, "rb")
该行既错误又无用(您永远不会使用
file
)。删除它。您可能需要在
read_csv
中阅读input_file
回到开头:file_input.seek(0)
您缺少上传命令 (
STOR
)storbinary
调用:session.storbinary("STOR " + input_file.name, input_file)