bash与python的管道调用方法

1.调用方式

cat 3.txt | ./add2Dict.py  word.xml 


2.逻辑实现

文档:http://docs.python.org/2/library/io.html

代码如下:

        ###确认输入GB18030编码
        reader = io.open(sys.stdin.fileno(), mode='rb', closefd=False)
        pipe_data = reader.read()
        try:
            pipe_data = pipe_data.decode('gb18030')
            c_list = pipe_data.split('\n')
        except:
            print('请确认原文件是gbk(gb18030)编码!')
            sys.exit(0)


原理: python从终端stdin读数据,采用二进制方式读入,手工解码.

存在问题:无法区分下面2个操作

 (1) cat 2.txt | ./add2Dict.py  word.xml  

 (2) ./add2Dict.py  word.xml  

解决办法:    print('=====fp.isatty()= ', sys.stdin.isatty() ) 可以区分





版权声明:本文为noticmp原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。