Python 在 Linux 上查找 stdin 文件路径

发布于 2024-11-11 14:52:19 字数 297 浏览 3 评论 0原文

我如何知道附加到我的 stios 的文件(或 tty)?

比如:

>>> import sys
>>> print sys.stdin.__path__
'/dev/tty1'
>>>

我可以查看 proc:

import os, sys
os.readlink('/proc/self/fd/%s' % sys.stdin.fileno())

但似乎应该有一个内置的方法?

How can I tell the file (or tty) that is attached to my stdios?

Something like:

>>> import sys
>>> print sys.stdin.__path__
'/dev/tty1'
>>>

I could look in proc:

import os, sys
os.readlink('/proc/self/fd/%s' % sys.stdin.fileno())

But seems like there should be a builtin way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

回忆追雨的时光 2024-11-18 14:52:19

sys.std* 对象是标准 Python 文件对象,因此它们具有一个 name 属性 和一个 isatty 方法

>>> import sys
>>> sys.stdout.name
'<stdout>'
>>> sys.stdout.isatty()
True
>>> anotherfile = open('/etc/hosts', 'r')
>>> anotherfile.name
'/etc/hosts'
>>> anotherfile.isatty()
False

无法准确告诉您 TTY 是什么你得到的设备,这是Python提供的API的扩展。

The sys.std* objects are standard Python file objects, so they have a name attribute and a isatty method:

>>> import sys
>>> sys.stdout.name
'<stdout>'
>>> sys.stdout.isatty()
True
>>> anotherfile = open('/etc/hosts', 'r')
>>> anotherfile.name
'/etc/hosts'
>>> anotherfile.isatty()
False

Short of telling you exactly what TTY device you got, that's the extend of the API offered by Python.

不一样的天空 2024-11-18 14:52:19

知道了!

>>> import os
>>> import sys
>>> print os.ttyname(sys.stdin.fileno())
'/dev/pts/0'
>>>

如果 stdin 不是 TTY,它会引发OSError: [Errno 22] Invalid argument;但这很容易用 isatty() 进行测试

Got it!

>>> import os
>>> import sys
>>> print os.ttyname(sys.stdin.fileno())
'/dev/pts/0'
>>>

It raises OSError: [Errno 22] Invalid argument if stdin isn't a TTY; but thats easy enough to test for with isatty()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文