elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Escribiendo strings en archivos (python 2.6)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Escribiendo strings en archivos (python 2.6)  (Leído 5,464 veces)
Carloswaldo
Traductor
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.764


Nos reservamos el derecho de ban.


Ver Perfil WWW
Escribiendo strings en archivos (python 2.6)
« en: 5 Enero 2010, 00:08 am »

Bien pues tengo un código bastante simple, más o menos así:

Código
  1. import urllib
  2. a="http://diveintopython.org/html_processing/extracting_data.html"
  3. #Abrimos la url
  4. f = urllib.urlopen(a)
  5. s = f.read(10000)
  6. #Escribimos el resultado en un archivo
  7. log_file = open("log.txt", "w+" ,10000)
  8. log_file.write(s)
  9. f.close()
  10. raw_input()

Lo que hace es obtener el html de la url y guardarlo en un txt, o al menos eso es lo que debería hacer. El problema es que al ejecutar el script efectivamente se crea el archivo .txt pero solo se guarda una parte del html, y solo se guardará completo cuando se termine de ejecutar el script. Buscando he encontrado esto:

http://docs.python.org/library/stdtypes.html#file.write

Citar
file.write(str)
    Write a string to the file. There is no return value. Due to buffering, the string may not actually show up in the file until the flush() or close() method is called.

El .close() lo tengo y aún agregando un .flush() antes del .close() no me da los resultados que deseo. ¿Alguien sabe como puedo solucionar esto?


En línea





Dominio en venta: https://forojapones.com/
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Escribiendo strings en archivos (python 2.6)
« Respuesta #1 en: 5 Enero 2010, 00:15 am »

Probaste sin usar buffer?

Código
  1. s = f.read()
  2. #Escribimos el resultado en un archivo
  3. log_file = open("log.txt", "w+")

Saludos


En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
CaronteGold


Desconectado Desconectado

Mensajes: 339



Ver Perfil
Re: Escribiendo strings en archivos (python 2.6)
« Respuesta #2 en: 5 Enero 2010, 00:48 am »

Probaste sin usar buffer?

Código
  1. s = f.read()
  2. #Escribimos el resultado en un archivo
  3. log_file = open("log.txt", "w+")

Saludos

 
   Si quitas el buffer, y haces print a " s ", se ve todo, pero luego al escribirlo en un .txt, aparece hasta poco antes del final, pero quedan lineas sin terminar...

  EDITO:


 Ya sé por qué es, tienes que cerrar tambien log_file, quedando  log_file.close()

  Saludos.
« Última modificación: 5 Enero 2010, 00:53 am por CaronteGold » En línea

Carloswaldo
Traductor
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.764


Nos reservamos el derecho de ban.


Ver Perfil WWW
Re: Escribiendo strings en archivos (python 2.6)
« Respuesta #3 en: 5 Enero 2010, 04:07 am »

Probaste sin usar buffer?

Código
  1. s = f.read()
  2. #Escribimos el resultado en un archivo
  3. log_file = open("log.txt", "w+")

Saludos

Sí, de hecho ese fue mi código original, pensé que indicando el número de bytes arreglaría el problema pero no fue así.

Ya sé por qué es, tienes que cerrar tambien log_file, quedando  log_file.close()

Funcionó perfecto. Gracias :D
En línea





Dominio en venta: https://forojapones.com/
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Escribiendo strings en archivos (python 2.6)
« Respuesta #4 en: 5 Enero 2010, 04:12 am »

Ya sé por qué es, tienes que cerrar tambien log_file, quedando  log_file.close()
Funcionó perfecto. Gracias :D

Que ya no tenías el close()?, era justamente lo que ponía en la documentación oficial

Citar
file.write(str)
    Write a string to the file. There is no return value. Due to buffering, the string may not actually show up in the file until the flush() or close() method is called.
El .close() lo tengo y aún agregando un .flush() antes del .close() no me da los resultados que deseo. ¿Alguien sabe como puedo solucionar esto?
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Carloswaldo
Traductor
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.764


Nos reservamos el derecho de ban.


Ver Perfil WWW
Re: Escribiendo strings en archivos (python 2.6)
« Respuesta #5 en: 5 Enero 2010, 04:13 am »

Solo tenía el f.close(), me olvidé que también tenía que hacer log_file.close() :xD
En línea





Dominio en venta: https://forojapones.com/
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Escribiendo strings en archivos (python 2.6)
« Respuesta #6 en: 5 Enero 2010, 04:19 am »

:xD ...

... tampoco esta de más decir que el importante es el file.close(), el de urllib se va a cerrar de cualquier manera, pero el file puede quedar bloqueado y no permitir acceder posteriormente :-\

Y bueno, solucionado entonces ....

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Carloswaldo
Traductor
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.764


Nos reservamos el derecho de ban.


Ver Perfil WWW
Re: Escribiendo strings en archivos (python 2.6)
« Respuesta #7 en: 5 Enero 2010, 04:28 am »

Sip, a veces me trabo en tonterías xD Gracias a los 2.
En línea





Dominio en venta: https://forojapones.com/
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema escribiendo un archivo en Python
Scripting
Arnau27 7 4,992 Último mensaje 8 Enero 2012, 12:46 pm
por Arnau27
[SOURCE] SQL Optimizer - Limpie las Strings mal exportadas en sus archivos .sql
.NET (C#, VB.NET, ASP)
z3nth10n 0 1,609 Último mensaje 4 Agosto 2013, 00:18 am
por z3nth10n
Problema con Python archivos
Scripting
AdeLax 2 2,873 Último mensaje 26 Octubre 2013, 21:37 pm
por 0x5d
[?][C++] Vectores, strings y archivos con clase - C++
Programación C/C++
marlboreano 6 3,686 Último mensaje 7 Marzo 2015, 14:37 pm
por marlboreano
[Python] Strings diferentes
Scripting
Sentex 0 1,570 Último mensaje 22 Enero 2019, 20:41 pm
por Sentex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines