有没有办法检查python进程的输出是否正在写入文件?我希望能够做到这样的事情:
if is_writing_to_terminal:
sys.stdout.write('one thing')
else:
sys.stdout.write('another thing')
答案 0 :(得分:4)
您可以使用os.isatty()
检查文件描述符是否为终端:
if os.isatty(sys.stdout.fileno()):
sys.stdout.write('one thing')
else:
sys.stdout.write('another thing')
答案 1 :(得分:1)
使用os.isatty
。这需要一个文件描述符(fd),可以使用fileno
成员获得。
>>> from os import isatty
>>> isatty(sys.stdout.fileno())
True
如果你想支持任意文件(例如StringIO
),那么你必须检查文件是否有关联的fd,因为并非所有文件都喜欢这样做:
hasattr(f, "fileno") and isatty(f.fileno())