Python: el nombre no está definido

CorePress2024-01-24  13

Estoy intentando acceder a mi variable pero dice que el nombre no está definido. Aquí leo el archivo 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))

Aquí puedo obtener la longitud del párrafo.

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))

Pero aquí dice

NameError: name 'para' is not defined

Quizás sea un caso similar a este: Error de variable no definida, ¿y si la declaración no se ejecuta?

- Kostas

27 de marzo de 2021 a las 6:57

pero la condición if se cumple y el valor debe estar dentro de la variable

- Talha Anwar

27 de marzo de 2021 a las 7:07

¿Quizás la condición if no se cumple? ¿Qué sucede si colocas para = read_pdf('qna/'+filename) fuera de la declaración if?

- Kostas

27 de marzo de 2021 a las 7:13

Si la condición no se cumple, ¿por qué se imprime para th?La primera vez dentro primero si la condición.

- Talha Anwar

27 de marzo de 2021 a las 7:29

1

Sí, como estoy llamando a una función dentro de la declaración if, debería estar fuera de función

- Talha Anwar

27 de marzo de 2021 a las 7:43



------------------------------------

Simplemente inicialice para con una cadena vacía, antes de para = read_pdf('qna/'+filename)



------------------------------------

No puedo reproducir el código localmente, pero creo que el código "si" La declaración se evalúa como False, por lo que el código

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

nunca se ejecuta. Esta es la única manera (que se me ocurre) de que su variable "para" no estar definido.

Esto también podría ser relevante con respecto a su botón iluminado: El botón Streamlit funciona solo una vez

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare