Если вам нужен независимый от платформы способ получения имени файла, передайте его в качестве аргумента и используйте argparse (или optparse) для чтения ваших аргументов, вообще не полагайтесь на перенаправление оболочки.
Используйте python my.py --output somefile.txt
с кодом, таким как:
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
Если знание имени является необязательным и используется для какой-то странной оптимизации, тогда используйте решение Игоря Назаренко и убедитесь, что sys.platform
равно 'linux2'
, в противном случаепредположим, что у вас нет имени, и относитесь к нему как к обычной трубе.