How Do You Get Redirected Input?

not your business not.valid at
Wed Jul 2 22:04:53 CEST 2003

Irmen de Jong wrote:

> not your business wrote:
>> I have a shell tool that accepts arguments on the command line. I would
>> like
>> to check if the input is being piped in.  That is,
>>         $ < cmdlst.txt
>> In this case sys.argv is empty. So I added
>>         pipein =,256)
>>         if (pipein):
>>             input_args = pipein.split()
>>         else:
>>             input_args = sys.argv[1:]
>> Problem is that if nothing is redirected in, the script waits for a Enter
>> pressed on the the keyboard. Anyone know a solution to this?  Thanx in
>> advance for any help.
> Why not turn it around? First check if sys.argv is *not* empty,
> in which case the user provided command line arguments, and
> proceed to parse those. Otherwise (if sys.argv *is* empty),
> assume the input is piped in and proceed to read the standard
> input.
> --Irmen

Okay, but there still seems to be a problem.  Lets say you typed 

If sys.argv[1:] is empty, I want to display help.  But if I'm checking for
redirected input by my problematic method next, the script hangs, again,
waiting for a Enter to be pressed and the user, therefore, doesn't my usage

I think I need to find a way to test for redirected input without the actual thing.  One hack that came to mind was to fork() a seperate
process to do this and pipe back within a time period any results. The 
parent could just go on if no response.  But that seems a little extreme
(and ugly) plus it's platform dependent unless, I guess, I it do it with

More information about the Python-list mailing list