【问题标题】:Name is not defined streamlit名称未定义 streamlit
【发布时间】:2021-06-23 23:32:35
【问题描述】:

我正在尝试访问我的变量,但它说名称未定义,我在这里阅读 pdf 文件

def read_pdf(file):

    with open(file, "rb") as f:
        pdf = pdftotext.PDF(f)
    st.write('button clicked',file[:-4]+'.txt')
    with open(file[4:-4]+'.txt', 'a') as f:
        for page in pdf:
            f.write("%s\n" % page)    
    return " ".join(pdf)

if st.button('read_pdf'):
    para = read_pdf('qna/'+filename)
    st.write('length of text: %s' % len(para))

在这里我可以得到段落的长度。

sentence = st.text_input('Input your Question here:') 
if sentence:
    st.write('length of text: %s' % len(para))
    st.write('length of sentence: %s' % len(sentence))

但是这里说

NameError: name 'para' is not defined

【问题讨论】:

  • 但是if条件满足,值应该在变量内
  • 可能if条件不满足?如果将para = read_pdf('qna/'+filename) 放在 if 语句之外会发生什么?
  • 如果条件不满足那么为什么它在第一个if条件内第一次打印。
  • 是的,因为我在 if 语句中调用函数,所以它应该不在函数中

标签: python streamlit


【解决方案1】:

在 para = read_pdf('qna/'+filename) 之前用空字符串初始化 para

【讨论】:

    【解决方案2】:

    我无法在本地重现代码,但我认为“if”语句的计算结果为 False,所以代码

    para = read_pdf('qna/'+filename)
    st.write('length of text: %s' % len(para))
    

    永远不会被执行。这是不定义变量“para”的唯一方法(我能想到的)。

    这也可能与您的流光按钮有关: Streamlit button works only once

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-29
      • 2018-01-24
      • 2018-02-21
      • 2020-07-31
      • 2018-07-07
      相关资源
      最近更新 更多