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