文件不存在错误,用户输入文件名



我正在使用python中的streamlit来生成一个工具,该工具接受用户输入的csv文件名,然后对文件中的数据进行清理/制表。

我遇到了一个问题,在用户输入文件名之前,我的流光站点显示"FileNotFoundError: [Errno 2]没有这样的文件或目录:">

这是预期的,因为用户还没有输入他们的文件名——但是一旦文件名输入,代码就会顺利运行。我希望克服这个问题,但作为Python的新手,我不确定如何解决!

请参阅下面的代码片段

autocall_gbp_file = str(st.text_input("Please type in your Autocall File Name (GBP)"))
filepath = M:/Desktop/AutomationProject/
express_gbp = pd.read_csv(filepath + autocall_gbp_file + ".csv")
st.write('Saved!')

在任何用户输入之前我得到的确切错误是:

FileNotFoundError: [Errno 2] No such file or directory: 
'M:/Desktop/AutomationProject/.csv'
Traceback:
File "C:Usersadavie18.condaenvsprojectenvlibsite- 
packagesstreamlitscriptrunnerscript_runner.py", line 475, in 
_run_script
exec(code, module.__dict__)
File "M:DesktopAutomationProjectAutocallApp.py", line 179, in 
<module>
express_gbp = pd.read_csv(filepath+autocall_gbp_file+".csv")
File "C:Usersadavie18.condaenvsprojectenvlibsite- 
packagespandasutil_decorators.py", line 311, in wrapper
return func(*args, **kwargs)
File "C:Usersadavie18.condaenvsprojectenvlibsite- 
packagespandasioparsersreaders.py", line 680, in read_csv
return _read(filepath_or_buffer, kwds)
File "C:Usersadavie18.condaenvsprojectenvlibsite- 
packagespandasioparsersreaders.py", line 575, in _read
parser = TextFileReader(filepath_or_buffer, **kwds)
File "C:Usersadavie18.condaenvsprojectenvlibsite- 
packagespandasioparsersreaders.py", line 933, in __init__
self._engine = self._make_engine(f, self.engine)
File "C:Usersadavie18.condaenvsprojectenvlibsite- 
packagespandasioparsersreaders.py", line 1217, in _make_engine
self.handles = get_handle(  # type: ignore[call-overload]
File "C:Usersadavie18.condaenvsprojectenvlibsite- 
packagespandasiocommon.py", line 789, in get_handle
handle = open(

提前感谢任何可以提供建议的人!

Streamlit和Python的一般模式通常是测试存在的值:


if autocall_gbp_file:
express_gbp = pd.read_csv(filepath + autocall_gbp_file + ".csv")

当Streamlit应用程序在用户输入内容之前运行时,autocall_gbp_file的值为None。通过写入if autocall_gbp_file:,您只在某人输入值后运行熊猫read_csv

单独使用,您最好使用st.file_uploader而不是使用text_input来开发它,因为Streamlit应用程序不一定能够访问用户文件系统和与您正在开发的机器相同的驱动器映射。通过使用st.file_uploader,您实际上提供了实际的文件,而不是它可能所在位置的引用。