2024-09-29 02:23:43 发布
网友
如何访问其他文件流,如Python中的comm命令
comm
comm -23 <(sort -n Asub|uniq) <(sort -n A|uniq)
我知道我可以通过sys.stdin访问stdin,但是如何访问其他输入流呢
sys.stdin
谢谢你提出这个问题,因为我实际上不理解我自己的行为。然而,经过一番挖掘之后,它会创建一个临时虚拟文件描述符,将子命令中的信息导入其中,然后返回该文件描述符的名称。要了解我的意思,请看这个python程序:
import sys for arg in sys.argv: print('|{}|'.format(repr(arg)))
当像python3 thing.py <(cat a.txt) <(cat b.txt)一样调用它时,您应该看到输出类似于:
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的内容匹配)
希望有帮助
谢谢你提出这个问题,因为我实际上不理解我自己的行为。然而,经过一番挖掘之后,它会创建一个临时虚拟文件描述符,将子命令中的信息导入其中,然后返回该文件描述符的名称。要了解我的意思,请看这个python程序:
当像
python3 thing.py <(cat a.txt) <(cat b.txt)
一样调用它时,您应该看到输出类似于:最后,为了回答您的问题,您需要做的是从该子流程读取数据,只需像打开任何其他文件一样打开该文件描述符。例如:
这给了我一个输出,比如:
(与a.txt的内容匹配)
希望有帮助
相关问题 更多 >
编程相关推荐