2012-01-24 17 views
8

So che suona come qualcosa che posso google, ma la verità è che non trovo o non capisco quello che spiegano le poche fonti di Python 3.Qualcuno può darmi un breve tutorial in stdin e stdout in Python 3?

Così qui sono le mie domande:

  • È input() la funzione stdin in Python 3? Significa che quando apri il tuo programma nomefile.py, lo stdin è ciò che l'utente digita?
  • print() è la funzione stdout in Python 3, oppure è necessario scrivere in un file?
  • Per il Spotify puzzle, è indicato "L'input viene letto da stdin". Cosa dovrebbe includere il mio file di stdin e stdout?

Aggiornamento: Questo significa che posso usare:

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

... invece di ...

unfmtdDate = str(input()) 

?

+0

Cosa intendi per "funzione stdin" e "funzione stout"? Stdin e stout sono file. Non funzioni. Questi file hanno metodi per leggere o scrivere. Puoi chiarire cosa intendi? –

+0

Voglio dire come si scrive ai file, ed è possibile guardare quei file? –

+0

Le risposte sono: 1. "Sì e sì". 2. "Sì". 3. "Questa domanda non ha senso". Aggiornamento: "Sì e no". –

risposta

7

stdin e stdout sono oggetti di tipo file forniti dal sistema operativo. In generale, quando un programma viene eseguito in una sessione interattiva, stdin è l'input da tastiera e stdout è tty dell'utente, ma la shell può essere utilizzata per reindirizzare da file normali o output in pipe da e input ad altri programmi.

input() viene utilizzato per richiedere all'utente l'immissione digitata. Nel caso di qualcosa di simile a un puzzle di programmazione, si assume che stdin venga reindirizzato da un file di dati e, quando viene indicato il formato di input, è preferibile utilizzare sys.stdin.read() anziché richiedere l'input con input(). input() è destinato per l'input utente interattivo, esso può visualizzare una richiesta (su sys.stdout) e utilizzare la libreria GNU readline (se presente) per consentire la modifica linea, ecc

print() è, infatti, il modo più comune di scrivendo a stdout. Non è necessario fare nulla di speciale per specificare il flusso di output. print() scrive su sys.stdout se non viene fornito alcun file alternativo come parametro file=.

+0

@ Wooble Grazie mille! –

0

Da the Python documentation for print:

Il argomento file deve essere un oggetto con un metodo write(string); se non è presente o None, verrà utilizzato sys.stdout. Il buffering dell'output è determinato dal file . Utilizzare file.flush() per garantire, ad esempio, l'aspetto immediato su uno schermo.

0

È input() la funzione stdin in Python 3?

Sì.

Questo significa che quando si apre il programma filename.py, il stdin è ciò che l'utente?

Sì.

è print() la funzione stdout in Python 3, o avete a scrivere su un file?

È possibile utilizzare entrambi.

Per il puzzle Spotify, si dice "Input is read from stdin". Cosa dovrebbe includere il mio file di stdin e stdout?

Basta usare import sys per raggiungere i file sys.stdin e sys.stdout. Non è necessario importare se si utilizzano invece le funzioni integrate input e print.

+3

'stout'? 'Stein'? Prendi un'altra birra! –

+0

@Mike DeSimone Grazie! –

+0

@Greg Hewgill: il mio browser sembra essersi sviluppato un futuro corretto. È fastidioso. –

0

Is input() la funzione stdin in Python 3? Significa che quando apri il tuo programma nomefile.py, lo stdin è ciò che l'utente digita?

input() legge dallo standard input (chiamato stdin in breve in alcuni contesti), sì. Nessuna lingua che conosca ha una funzione denominata stdin nella libreria standard. Quando si esegue il programma nel modo consueto, quale tipo di utente viene fornito sullo standard input, sì. Questo è ciò che significa "input standard". Esiste un programma separato che alimenta ciò che l'utente digita sullo standard input (e fa un paio di altre cose utili come interpretare il tasto backspace). Il tuo script non è ciò che crea la finestra in cui il testo è stato digitato.

sys.stdin (cioè, il valore stdin definito nel modulo sys) è un oggetto che rappresenta standard input. Questo è fornito in modo tale da poter essere utilizzato in contesti in cui è necessario specificare "un file", in modo che l'input venga letto dall'utente anziché da un file.

È print() la funzione stdout in Python 3 o è necessario scrivere in un file?

print() scrive (per impostazione predefinita, è possibile fornire un argomento file parola chiave per cambiare questo) per l'output standard (chiamato stdout in breve in alcuni contesti), sì. Tutti gli avvertimenti sopra riportati sono validi: stdout non è una funzione in nessuna lingua di cui abbia mai sentito parlare, e un programma completamente separato sta effettivamente facendo in modo che l'output del tuo script venga visualizzato sullo schermo in un bel testo bianco su sfondo 80x24 casella di sfondo nero (o comunque hai configurato).

sys.stdout è un oggetto che rappresenta l'uscita standard, utilizzato in modo simile a sys.stdin. Puoi usarlo esplicitamente con la funzione print, ma non ha senso: è l'impostazione predefinita.

Per il puzzle Spotify, si dice "Input is read from stdin". Cosa dovrebbe includere il mio file di stdin e stdout?

La specifica del problema significa "utilizzare la funzione input() per ricevere input".

+0

Nota che 'input()' ** non può ** leggere da un file specificato (ci sono modi per far sì che lo standard input sia un file, ma di nuovo, generalmente è esterno al tuo programma). Non è pensato per essere esattamente simmetrico con la funzione 'print()'. Dopo tutto, visualizza un prompt ... non avrebbe senso visualizzare un prompt durante la lettura da un file, vedi? –

1

Quando si esegue il programma Python, sys.stdin è l'oggetto file collegato all'ingresso standard (STDIN), sys.stdout è l'oggetto di file per l'output standard (STDOUT), e sys.stderr è l'oggetto file per errore standard (STDERR).

Ovunque nella documentazione si vedano riferimenti a input standard, output standard o errore standard, si riferisce a questi handle di file. È possibile accedervi direttamente (sys.stdout.write(...), sys.stdin.read() ecc.) O utilizzare le funzioni di comodità che utilizzano questi flussi, ad esempio input() e print().

per il puzzle Spotify, il modo più semplice per leggere l'input sarebbe qualcosa di simile:

import sys 
data = sys.stdin.read() 

Dopo queste due linee di ingresso per il vostro programma è ora in str data.

Problemi correlati