在 Python 中使用 Streamlit 的待办事项应用程序可能存在什么问题?

What could be the problem in To-do app using Streamlit in Python?

提问人:Samik Pandit 提问时间:12/2/2022 最后编辑:Jamiu S.Samik Pandit 更新时间:12/3/2022 访问量:146

问:

to-dos.py

import streamlit as st
import get_todos

todos = get_todos.getTodos()

def add_todos():
    todo1 = st.session_state["new_todo"] + "\n"
    todos.append(todo1)
    get_todos.writeTodos(todos)


st.title("My TO-DO App")
...

get_todos.py

def getTodos():
    with open("docs.txt", "r") as file:
        data = file.readlines()
    return data


def writeTodos(adder):
    with open("docs.txt", "w") as file:
        file.writelines(adder)


我使用 streamlit 在 Python 中构建了一个 TO-DO 应用程序 在终端中执行此任务时,它会不断显示文件实际存在。'FileNotFoundError'

可能有什么问题? 任何语法错误?还是逻辑错误?

错误回溯: enter image description here

我的项目结构如下图所示: enter image description here

python pycharm streamlit contextmanager filenotfounderror

评论

0赞 Jamiu S. 12/2/2022
文件位于哪个目录中?.如果它在同一个目录中,你可以试试这个./docs.txt
0赞 Samik Pandit 12/2/2022
@JamiuShaibu 不,它不起作用。我也可能错了!请明确说明要更改和不更改的内容。此外,它在 lib 文件夹中
0赞 Jamiu S. 12/2/2022
对不起,我帮不上忙,如果我们不知道你们目录的结构,任何人都帮不上忙。我认为你应该把你的问题说得更清楚,我提供了你的目录的结构。
1赞 Jamiu S. 12/2/2022
您的文件不在 lib 文件夹中,它们在 venv 中,venv 不应包含我在您的 screeshot 中看到的任何文件。你的结构不合适。我建议您访问 pycharm 项目结构来重组您的项目。这可能感觉像是脖子上的疼痛,但我敢打赌这是值得的。这些文件应该在文件夹中。samik
1赞 Samik Pandit 12/2/2022
@JamiuShaibu 非常感谢您的帮助。一旦我将文件放在 Samik 文件夹中,它就起作用了。

答:

1赞 Jamiu S. 12/3/2022 #1

虚拟环境的主要目的是管理特定项目的设置和依赖关系,而不考虑其他 Python 项目。virtualenv 工具与 PyCharm 捆绑在一起,因此用户无需安装它。它总是在名为的项目目录中找到,该目录应该是一个独特的文件夹设计,以实现特定目的。venvvenv

注意:不应将任何外部文件添加到 venv 文件夹。

这清楚地表明您的结构不合适。我建议您访问 pycharm 项目结构以阅读有关虚拟环境配置的更多信息。你应该正确地重组你的项目。这可能感觉像是脖子上的疼痛,但我敢打赌这是值得的。

注意:
您添加到的所有外部文件都应该位于您的文件夹中,该文件夹是您的项目主文件夹。
venvsamik