如何在Python中访问unix shell的其他文件流?

2024-09-29 02:23:43 发布

您现在位置:Python中文网/ 问答频道 /正文

如何访问其他文件流,如Python中的comm命令

comm -23 <(sort -n Asub|uniq) <(sort -n A|uniq)

我知道我可以通过sys.stdin访问stdin,但是如何访问其他输入流呢


Tags: 文件命令stdinsyssortcommuniqasub
1条回答
网友
1楼 · 发布于 2024-09-29 02:23:43

谢谢你提出这个问题,因为我实际上不理解我自己的行为。然而,经过一番挖掘之后,它会创建一个临时虚拟文件描述符,将子命令中的信息导入其中,然后返回该文件描述符的名称。要了解我的意思,请看这个python程序:

import sys
for arg in sys.argv:
    print('|{}|'.format(repr(arg)))

当像python3 thing.py <(cat a.txt) <(cat b.txt)一样调用它时,您应该看到输出类似于:

|'thing.py'|
|'/proc/self/fd/11'|
|'/proc/self/fd/12'|

最后,为了回答您的问题,您需要做的是从该子流程读取数据,只需像打开任何其他文件一样打开该文件描述符。例如:

with open(sys.argv[1]) as f:                                                                        
    for line in f:                                                                                    
        print(line.strip())

这给了我一个输出,比如:

A
B
C

(与a.txt的内容匹配)

希望有帮助

相关问题 更多 >