Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: tincopasan en 7 Julio 2016, 07:53 am



Título: Aporte muy simple de guardar archivos con python y mdos
Publicado por: tincopasan en 7 Julio 2016, 07:53 am
me ha pasado varias veces que los script solo devuelven cadenas y no hay intervención del usuario, por ejemplo si realizan algún cálculo,muchas cadenas  o fibonacci, más lo cual me preguntaron si esos resultados se pueden guardar en un archivo de texto. Es más que obvio que se puede, pero...
tendría que modificar cada uno de los script con las sentencias ya recontra conocidas.Con los años además de vago me gusta simplificar sin grandes complicaciones así que...
era usuario de dos en sus inicios y pensé o hago un bat (que odio) o uso otro script(imprime.py) y listo!
código de imprime.py
Código
  1. import os
  2. import sys
  3. archivo= sys.argv[1]
  4. os.system('python {} > impreso.txt'.format(archivo))
  5.  

4 líneas y asunto resuelto para siempre en estos casos.
se usa muy fácil: desde la consola de cmd python imprime.py archivoaimprimir.py
Saludos y perdón por esta huevada pero la quice compartir.

Edito:

lo entiendo pero...
1) si le quiero cambiar el nombre al archivo de salida lo hago en el script
2) de tu forma el usuario tendría que pasar 2 argumentos,el nombre del archivo a crear y el nombre del archivo a guardar la salida- es más rápido  con un solo argumento

Dicho sea de paso, creo no entendiste que imprime llama a cualquier archivo que quiera(siempre que no espere la intervención del usuario) y lo mande a un txt sin realizarle ninguna modificación.


Título: Re: Aporte muy simple de guardar archivos con python y mdos
Publicado por: peter_lyon en 7 Julio 2016, 14:33 pm
Eso funciona, pero la forma más correcta de hacerlo, es modificando la salida standard a un fichero de tu elección, por ejemplo, pasado por argv[1]:


import sys
sys.stdout = open(sys.argv[1], 'w')



Y ya con eso, cada print irá a ese fichero, al final.
Si quieres que cada vez que se ejecute el script, el fichero  se borre, en vez de añadir líneas al final, simplemente abres con la opción "wb" en vez de con "w".

Espero que se haya entendido la idea.