Bazı code golf meydan okumalarını yapmaya çalışıyorum, ancak hepsi girdinin stdin
den 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
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.
İş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.