2011-01-28 56 views
6
import itertools 

variations = itertools.product('abc', repeat=3) 
for variations in variations: 
    variation_string = "" 
    for letter in variations: 
     variation_string += letter 
    print (variation_string) 

¿Cómo puedo redirigir la salida a un archivo txt (en la plataforma de Windows)?cómo dirigir la salida a un archivo txt en python en Windows

+0

El paso 1 es formatear su código correctamente. Use el botón '{}', por favor. –

+0

@ S.Lott ¿por qué? eso simplemente no tiene ningún sentido – bicycle

Respuesta

1

Si fuera yo, me gustaría utilizar el método de David Heffernan arriba para escribir la variable al archivo de texto (porque otros métodos requieren que el usuario use un símbolo del sistema).

import itertools 

file = open('out.txt', 'w') 
variations = itertools.product('abc', repeat=3) 
for variations in variations: 
    variation_string = "" 
    for letter in variations: 
     variation_string += letter 
    file.write(variation_string) 
file.close() 
16

Desde la consola que iba a escribir:

python script.py > out.txt 

Si quieren hacerlo en Python entonces usted podría escribir:

with open('out.txt', 'w') as f: 
    f.write(something) 

Obviamente, esto es sólo un ejemplo trivial. Claramente, harías más dentro del bloque con.

2

En ventana de símbolo del sistema, este comando almacenará la salida de program.py en el archivo salida.txt

python program.py > output.txt 
+0

la salida al programa anterior es como un estado agrupado :: aaaaabaacabaabbabcacaacbaccbaababbacbbabbbbbcbcabcbbcccaacabcaccbacbbcbcccaccbccc ////// Señor puede modificar el programa para que la salida esté en una línea después de la línea que es la la primera línea de la salida sería aaa y la siguiente línea sería aab y la siguiente sería aac y así sucesivamente ... Gracias – user593908

1

puede usar >>

log = open("test.log","w") 

print >> log, variation_string 

log.close() 
+0

importar itertools file = open ('out.txt', 'w') variaciones = itertools.product ('abc', repita = 3) para variaciones en variaciones: variation_string = "" para carta en variaciones: variation_string + = carta file.write (variation_string) file.close() \t la puso a la del programa anterior es como un estado agrupado :: aaaaabaacabaabbabcacaacbaccbaababbacbbabbbbbcbcabcbb ////// Sir puede modificar el programa para que la salida sería en una línea tras línea que es la primera línea de la la salida sería aaa y la siguiente línea sería aab y la siguiente sería aac y así sucesivamente ...Gracias – user593908

5

También puede redirigir stdout a su archivo directamente en su guión como print escribe de forma predeterminada para sys.stdout controlador de archivo. Python proporciona una forma sencilla de a ella:

import sys # Need to have acces to sys.stdout 
fd = open('foo.txt','w') # open the result file in write mode 
old_stdout = sys.stdout # store the default system handler to be able to restore it 
sys.stdout = fd # Now your file is used by print as destination 
print 'bar' # 'bar' is added to your file 
sys.stdout=old_stdout # here we restore the default behavior 
print 'foorbar' # this is printed on the console 
fd.close() # to not forget to close your file 
+0

Si está en Windows, tenga cuidado con el error de Windows - [No se puede redirigir el resultado cuando ejecuto el script de Python en Windows usando solo el nombre del script] (http://stackoverflow.com/questions/3018848/). Además, el controlador del sistema predeterminado para la salida estándar se almacena en 'sys .__ stdout__', por lo tanto, a menos que desee volver al anterior, no es necesario guardar' sys.stdout' antes de asignarlo. –

0

Extensión a David's answer

Si está utilizando PyCharm,

Ir a Ejecutar -> Editar Configuraciones -> Registros - -> Marca de verificación Guardar consola salida al archivo -> Introducir ruta completa -> Aplicar

Screenshot

Cuestiones relacionadas