idiomatic analogue of Perl's: while (<>) { ... }
Sahil Tandon
sahil at FreeBSD.org
Thu Sep 1 00:56:50 EDT 2011
I've been tasked with converting some programs from Perl -> Python, and
am (as will soon be obvious) new to the language. A few archive/google
searches were inconclusive on a consensus approach, which is OK, but I
just wonder if there is a more Python-esque way to do the following in
Python 2.7.1:
%%
# unbuffer STDOUT
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
# process input, line-by-line, and print responses after parsing input
while 1:
rval = parse(raw_input())
if rval == None:
print('foo')
else:
print('bar')
%%
This works, but while reading the documentation, I thought of using 'for
line in fileinput.input()' in lieu of 'while 1:' construct. This does
not work when debugging the program on the command line -- the script
appears to just hang no matter what is typed into STDIN. I believe this
is because of some internal buffering when using fileinput. Is there a
recommended way to disable such buffering? Am I taking a totally wrong
approach?
Feel free to just link me to previous discussions on the topic(s) if I
have missed them. Please be gentle with your cluebats. :-)
Thanks,
--
Sahil Tandon <sahil at FreeBSD.org>
More information about the Python-list
mailing list