2012-01-24 6 views
8

Sé que esto suena como algo que puedo buscar en Google, pero la verdad es que no encuentro o no entiendo lo que explican las pocas fuentes de Python 3.¿Alguien puede darme un tutorial rápido en stdin y stdout en Python 3?

Así que aquí están mis preguntas:

  • Es input() la función stdin en Python 3? ¿Eso significa que cuando abre su programa filename.py, el stdin es lo que el usuario escribe?
  • print() Es la función stdout en Python 3, o tiene que escribir en un archivo?
  • Para el Spotify puzzle, que se dice "de entrada se lee de la entrada estándar". ¿Qué debería incluir mi archivo de stdin y stdout?

Actualización: ¿Eso significa que puedo usar:

import sys 
unfmtdDate = str(sys.stdin.read()) 

... en lugar de ...

unfmtdDate = str(input()) 

?

+0

¿Qué quiere decir con 'función stdin' y 'función sólida'? Stdin y Stout son archivos. No funciona Estos archivos tienen métodos para leer o escribir. ¿Puedes aclarar a qué te refieres? –

+0

Quiero decir, ¿cómo se escribe en los archivos, y es posible mirar esos archivos? –

+0

Las respuestas son: 1. "Sí y sí". 2. "Sí". 3. "¿Eh? Esa pregunta no tiene sentido". Actualización: "Sí y no". –

Respuesta

7

stdin y stdout son objetos de archivo similar proporcionadas por el sistema operativo. En general, cuando un programa se ejecuta en una sesión interactiva, stdin es una entrada de teclado y stdout es el tty del usuario, pero el shell se puede usar para redirigirlos desde archivos normales o salida por canal desde y a otros programas.

input() se utiliza para indicar al usuario para entrada escrita. En el caso de algo así como un rompecabezas de programación, la cual es normalmente supone que stdin se redirige a un archivo de datos, y cuando se da el formato de entrada por lo general es mejor utilizar sys.stdin.read() en lugar de solicitud de una entrada con input(). input() está destinado a la entrada del usuario interactivo, puede mostrar un indicador (en sys.stdout) y el uso de la biblioteca readline de GNU (si está presente) para permitir la edición de línea, etc.

print() es, de hecho, la forma más común de escribiendo al stdout. No es necesario hacer nada especial para especificar el flujo de salida. print() escribe en sys.stdout si no se le da ningún archivo alternativo como un parámetro file=.

+0

@ Wooble ¡Muchas gracias! –

0

De the Python documentation for print:

El argumentoarchivo debe ser un objeto con un método write(string); si no está presente o None, se usará sys.stdout. El almacenamiento en búfer de salida está determinado por el archivo . Use file.flush() para asegurar, por ejemplo, la apariencia inmediata en una pantalla.

0

¿Es input() la función stdin en Python 3?

Sí.

¿Eso quiere decir que cuando se abre el programa de filename.py, la stdin es lo que el usuario escribe?

Sí.

Es print()stdout la función en Python 3, o tiene que escribir en un archivo?

Puede usar cualquiera.

Para el rompecabezas de Spotify, se dice "La entrada se lee de stdin". ¿Qué debería incluir mi archivo de stdin y stdout?

Sólo tiene que utilizar import sys para llegar a los archivos y sys.stdinsys.stdout. No necesita la importación si usa las funciones integradas input y print.

+3

'stout'? 'Stein'? ¡Toma otra cerveza! –

+0

@Mike DeSimone ¡Gracias! –

+0

@Greg Hewgill: Mi navegador parece haber crecido en un futuro autocorrecto. Está siendo molesto –

0

¿Está input() la función stdin en Python 3? ¿Eso significa que cuando abres tu programa filename.py, el stdin es lo que escribe el usuario?

input() lee de la entrada estándar (llamado stdin por sus siglas en algunos contextos), sí. Ningún idioma que conozco tiene una función llamada stdin en la biblioteca estándar. Cuando ejecuta el programa de la forma habitual, lo que el usuario escribe se suministra a la entrada estándar, sí. Eso es lo que significa "entrada estándar". Hay un programa separado que está alimentando lo que el usuario escribe a la entrada estándar (y haciendo un par de otras cosas prácticas como interpretar la tecla de retroceso). Su secuencia de comandos no es lo que crea la ventana en la que se escribe el texto.

sys.stdin (es decir, el valor stdin definida en el módulo sys) es un objetoque representa la entrada estándar. Esto se proporciona para que pueda usarlo en contextos en los que se espera que especifique "un archivo", para hacer que el usuario lea la información en lugar de un archivo.

¿Imprime() la función stdout en Python 3, o tiene que escribir en un archivo?

print() escribe (por defecto, se puede suministrar un argumento file palabra clave para cambiar esto) a la salida estándar (llamado stdout por sus siglas en algunos contextos), sí. Todas las advertencias anteriores se aplican: stdout no es una función en ningún idioma que haya escuchado, y un programa completamente separado está causando que el resultado de su script se muestre en pantalla en un bonito texto blanco de 80x24. cuadro de fondo negro (o como lo haya configurado).

sys.stdout es un objetoque representa la salida estándar, que se utiliza de manera similar a sys.stdin. Puede usarlo explícitamente con la función print, pero no tiene sentido: es el predeterminado.

Para el rompecabezas de Spotify, se dice "La entrada se lee de stdin". ¿Qué debería incluir mi archivo de stdin y stdout?

La especificación del problema significa "utilizar la función input() para recibir la entrada".

+0

Tenga en cuenta que 'input()' ** no ** puede leer desde un archivo especificado (hay formas de hacer que la entrada estándar sea un archivo, pero nuevamente, eso es generalmente externo a su programa). No está destinado a ser exactamente simétrico con la función 'print()'. Después de todo, muestra un mensaje ... no tendría sentido mostrar un mensaje mientras se lee desde un archivo, ¿ves? –

1

Cuando se ejecuta el programa en Python, sys.stdin es el objeto de archivo conectado a la entrada estándar (stdin), sys.stdout es el objeto de archivo de salida estándar (stdout), y sys.stderr es el objeto de archivo por error estándar (stderr).

En cualquier parte de la documentación que vea referencias a entradas estándar, salidas estándar o errores estándar, se refiere a estos identificadores de archivos. Puede acceder a ellos directamente (sys.stdout.write(...), sys.stdin.read(), etc.) o usar funciones convenientes que utilizan estas transmisiones, como input() y print().

Para el rompecabezas de Spotify, la forma más fácil de leer la entrada sería algo como esto:

import sys 
data = sys.stdin.read() 

Después de estas dos líneas de la entrada para el programa está ahora en el str data.

Cuestiones relacionadas