我正在编写一个python脚本,它从stdin获取输入,并希望跟踪stdin输入的行号。
我可以自己创建一个计数器,但我感觉python会自动跟踪行号,因此这会浪费计算量。我还没有找到如何获得/打印这个数字。
我已经阅读并尝试了.tell()方法,但它跟踪字符(或字节)而不是行。当输入来自stdin时,它似乎也失败了。它抛出IOError: [Errno 29] Illegal seek
我的测试脚本" pythonTest.py"看起来像:
import sys
with sys.stdin as file:
for line in file:
print(line.rstrip())
# Neat way to print the line number
执行上面的那个(就像现在一样):
$ echo 'asdf
asdf
asdf
asdf' | python pythonTest.py
adsf
asdf
asdf
asdf
我想:
$ echo 'asdf
asdf
asdf
asdf' | python pythonTest.py
adsf
1
asdf
2
asdf
3
asdf
4
有没有一种不错的pythonic方法,或者只是将自己的计数器添加到for循环的标准解决方案?