3

有没有办法检查 python 进程的输出是否被写入文件?我希望能够做类似的事情:

if is_writing_to_terminal:
    sys.stdout.write('one thing')
else: 
    sys.stdout.write('another thing')
4

2 回答 2

4

您可以使用os.isatty()来检查文件描述符是否是终端:

if os.isatty(sys.stdout.fileno()):
    sys.stdout.write('one thing')
else: 
    sys.stdout.write('another thing')
于 2012-11-14T11:13:35.343 回答
1

使用os.isatty. 这需要一个文件描述符 (fd),它可以通过fileno成员获得。

>>> from os import isatty
>>> isatty(sys.stdout.fileno())
True

如果您想支持任意文件喜欢(例如StringIO),那么您必须检查文件喜欢是否具有关联的 fd,因为并非所有文件喜欢都这样做:

hasattr(f, "fileno") and isatty(f.fileno())
于 2012-11-14T11:13:24.123 回答