Stdin'den nasıl okuyorsunuz?

Bazı code golf meydan okumalarını yapmaya çalışıyorum, ancak hepsi girdinin stdinden alınmasını gerektiriyor. Bunu Python'da nasıl elde edebilirim?

fileinput`]1 modülünü kullanabilirsiniz:

import fileinput

for line in fileinput.input():
    pass

fileinput komut satırı argümanlarında verilen dosya adları olarak belirtilen girdideki tüm satırları veya herhangi bir argüman sağlanmamışsa standart girdiyi döngüye sokacaktır.

Not: line sonda bir satırbaşı içerecektir; bunu kaldırmak için line.rstrip() kullanın

Yorumlar (1)

Bunu yapmanın birkaç yolu var.

  • sys.stdin, her şeyi okumak istiyorsanız read veya readlines fonksiyonlarını çağırabileceğiniz dosya benzeri bir nesnedir veya her şeyi okumak ve otomatik olarak yeni satırla bölmek istersiniz. (Bunun çalışması için import sys yapmanız gerekir).

  • Eğer kullanıcıdan girdi istemek istiyorsanız, Python 2.X'de raw_input, Python 3'te ise sadece input kullanabilirsiniz.

  • Aslında sadece komut satırı seçeneklerini okumak istiyorsanız, bunlara sys.argv listesi aracılığıyla erişebilirsiniz.

Muhtemelen Python'da I/O hakkındaki bu Vikikitap makalesini de faydalı bir referans olarak bulacaksınız.

Yorumlar (0)

İşte Python Öğrenmek'den:

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

Unix üzerinde, aşağıdaki gibi bir şey yaparak test edebilirsiniz:

% cat countlines.py | python countlines.py 
Counted 3 lines.

Windows veya DOS'ta yapardınız:

C:\> type countlines.py | python countlines.py 
Counted 3 lines.
Yorumlar (3)