Πώς διαβάζετε από το stdin;

Προσπαθώ να κάνω μερικές από τις προκλήσεις code golf, αλλά όλες απαιτούν την είσοδο να ληφθεί από το stdin. Πώς μπορώ να το πάρω αυτό στην Python;

Θα μπορούσατε να χρησιμοποιήσετε την ενότητα fileinput:

import fileinput

for line in fileinput.input():
    pass

Το `fileinput θα κάνει βρόχο σε όλες τις γραμμές της εισόδου που καθορίζονται ως ονόματα αρχείων που δίνονται στα ορίσματα της γραμμής εντολών, ή στην τυπική είσοδο αν δεν παρέχονται ορίσματα.

Σημείωση: Η line θα περιέχει μια νέα γραμμή στο τέλος της γραμμής- για να την αφαιρέσετε χρησιμοποιήστε την line.rstrip().

Σχόλια (1)

Υπάρχουν μερικοί τρόποι για να το κάνετε.

  • Το sys.stdin είναι ένα αντικείμενο που μοιάζει με αρχείο και στο οποίο μπορείτε να καλέσετε τις συναρτήσεις read ή readlines αν θέλετε να διαβάσετε τα πάντα ή αν θέλετε να διαβάσετε τα πάντα και να τα χωρίσετε αυτόματα με νέα γραμμή. (Πρέπει να import sys για να δουλέψει αυτό).

  • Αν θέλετε να προτρέψετε τον χρήστη για εισαγωγή, μπορείτε να χρησιμοποιήσετε την `raw_input στην Python 2.X, και απλά την input στην Python 3.

  • Αν στην πραγματικότητα θέλετε απλώς να διαβάσετε τις επιλογές της γραμμής εντολών, μπορείτε να έχετε πρόσβαση σε αυτές μέσω της λίστας sys.argv.

Πιθανόν να βρείτε αυτό το άρθρο του Wikibook για την είσοδο/έξοδο στην Python να είναι επίσης μια χρήσιμη αναφορά.

Σχόλια (0)

Εδώ είναι από το Learning Python:

import sys
data = sys.stdin.readlines()
print "Counted", len(data), "lines."

Στο Unix, μπορείτε να το δοκιμάσετε κάνοντας κάτι τέτοιο:

% cat countlines.py | python countlines.py 
Counted 3 lines.
C:\> type countlines.py | python countlines.py 
Counted 3 lines.
Σχόλια (3)