No file from stdin

Matimus mccredie at gmail.com
Thu May 24 15:40:53 EDT 2007


On May 24, 9:48 am, Tartifola <tartif... at gmail.com> wrote:
> Hi,
> suppose a script of python is waiting for a file from the stdin and none
> is given. How can I make the script to stop and, for example, print an
> error message?
>
> Sorry for the n00b question and thanks

I'm not exactly sure what you mean. This assumes that you intended the
contents of the file be piped in from the command line.
[code]
import sys

if sys.stdin.isatty():
    print >>sys.stderr, "expected input from stdin"
    sys.exit(1)

sys.stdout.write(sys.stdin.read())
[/code]

If you simply want a prompt "Enter a filename:", followed by an error
if it is not a valid file, I would use something like this:

[code]
import sys

filename = raw_input("Enter a filename:")

try:
    f = open(filename)
except IOError,e:
    print >>sys.stderr, e.strerror, e.filename
    sys.exit(e.errno)

#do stuff with f
[/code]








More information about the Python-list mailing list