2016-11-15 54 views

回答

1

感谢您提出这个问题,因为我实际上并不了解我自己的行为<()。然而,在一些挖掘之后,它看起来实际上会创建一个临时虚拟文件描述符,将它从子命令中输入信息,然后返回该文件描述符的名称。要明白我的意思,看看这个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中的内容)

希望帮助!

相关问题