"the.theorist" wrote: > I used this bit of code to detect wether i want stdinput or not. > > if len(args)==0: > args = [ sys.stdin ] > > Now in my main loop I've written: > > for file in args: > for line in open( file ): > #do stuff > > The probelm occurs when I pass no arguments and python trys to open( > sys.stdin ). > open() customarily accepts a pathname, and returns a file object. > But this code is so elegant I thought that maybe, if open were passed > file object it could re-open that file in a new mode (if a mode was > provided different from the current mode) or simply return the file > object it was passed.
so use your own open function: def myopen(file): if isinstance(file, basestring): return open(file) return file for file in args: for line in myopen( file ): #do stuff or perhaps def myopen(file): if hasattr(file, "read"): return file return open(file) ... or perhaps if not args: args = [ "-" ] def myopen(file): if file == "-": return sys.stdin return open(file) for file in args: for line in myopen( file ): #do stuff (the "-" = stdin convention is quite common) </F> -- http://mail.python.org/mailman/listinfo/python-list