Si usted necesita una manera independiente de la plataforma para obtener el nombre del archivo, pasarlo como argumento y utilizar argparse (o optparse) para leer sus argumentos, no hacer confíe en la redirección de shell en absoluto.
Uso python my.py --output somefile.txt
con código como:
parser = argparse.ArgumentParser()
parser.add_argument('--output', # nargs='?', default=sys.stdout,
type=argparse.FileType('w'),
help="write the output to FILE",
metavar="FILE")
args = parser.parse_args()
filename = args.output.name
Si conocer el nombre es opcional y se utiliza para una optimización raro, a continuación, utilizar la solución de Igor Nazarenko y comprobar que sys.platform
es 'linux2'
, de lo contrario asumir que no lo hace tener el nombre y tratarlo como un tubo normal.
Si está interesado en el nombre del TTY, hay 'os.ttyname (fd)', que funciona cuando 'os.isatty (fd)' es 'True', y así, funciona solo en Unix. –
¿Qué vas a hacer con la información? –
@karl - Es para fines de registro. – Kev