在 Unix Like 环境下的 Pipe (管线) 十分重要, 它可以将一个程式的输出, 送给另一个程式处理, 只要中间用 “|” 字符相隔, 让几个不同的程式互相配合工作, 以下本章会介绍在 Python 读取 Pipe 输入的方法.
在 Python 要读取 Pipe 输入, 可以用 sys 模组的 sys.stdin, 它会读取 /dev/stdin 的输入, 例如:
|
1 2 3 4 5 6 |
#!/usr/bin/python import sys for line in sys.stdin: print line |
以上程式码会将 stdin 输入逐行印出, 另一个例子是要将输入逐行读取, 然后将数值乘 2, 写法是这样:
|
1 2 3 4 5 |
#!/usr/bin/python import sys for line in sys.stdin: print int(line.strip()) * 2 |
可以这样执行测试:
|
1 |
echo -e "1\n2\n3" | ./test.py |
上面会用 echo 输入三行分别是 1, 2, 3 到 test.py, 执行结果是:
2
4
6
上面的 echo 加入了 -e 参数, 是要让 echo 直接输出 \n 换行字串, 如果没有 -e 参数, 不会输入 3 行, 而是输入一行 “1\\n2\\3”.