I have these two scripts:
clock.py
#!/usr/bin/env python3
import time
while True:
print("True", flush=True)
time.sleep(1)
continuous_wc.py
#!/usr/bin/env python3
import sys
def main():
count = 0
for line in sys.stdin:
sys.stdout.write(str(count))
count += 1
if __name__=='__main__':
main()
然后我像这样运行它们:
./clock.py | ./continuous_wc.py
我希望它会打印出以下内容:
1
2
3
4
5
...
每一秒钟都像一个时钟,因为它基本上正在计算文件中的行数。但它不输出任何内容。为什么?
每秒钟计算的是文件的行数,但程序并没有输出这个计算结果。原因在于代码没有添加输出的逻辑。
print("True", flush=True)
- Barmarcontinuous_wc.py
中的计数后面应该写一个换行符,因为你希望每个数字都在不同的行上。这也将解决问题,因为输出是行缓冲的。 - Barmarsys.stdin
和sys.stdout
,而不是input()
和print()
? - Barmar