Filename for stdout

Nobody nobody at nowhere.com
Thu Oct 21 11:33:57 EDT 2010


Richard Gibbs <richard.gibbs at smooth-stone.com> wrote:

> If my python script is called with stdout (or stdin or stderr)
> redirected to a file, how can I find the filename under Linux?  Under
> Windows?

On Linux, you can read the /proc/self/fd/* symlinks, e.g.:

	stdin_filename = os.readlink('/proc/self/fd/0')

This isn't portable, and won't always work, e.g. stdin may not be
associated with a file, the file may have been deleted, or /proc may not
be mounted.

If /proc isn't mounted, you can achieve the same result albeit with a lot
more effort by using os.fstat(0) to determine the device and inode
number then searching the filesystem (with e.g. os.walk or the "find"
utility) for a match (if one exists).




More information about the Python-list mailing list