stdin から入力を受け取り、stdin からの入力の行番号を追跡したい python スクリプトを作成しています。
自分でカウンターを作成することもできますが、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ループに独自のカウンターを追加するだけの標準的な解決策ですか?