1

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ループに独自のカウンターを追加するだけの標準的な解決策ですか?

4

0 に答える 0