0

私はbashの「wc」(単語数)コマンドとまったく同じことを行うPython3プロジェクトに取り組んでいます。入力の形式は次のようになります。

$ python3 myWC.py < fileName.txt

与えられたファイルを使用して、ファイル内のバイト、単語、および行をカウントし、それらを印刷したいと思います。stdinを使用してみましたが、単純なprint()ステートメントでさえ、指定された実際の文字列ではなく、stdinのオブジェクトを出力しているようです。誰かがPython3の基本的なstdinの使いやすさについてのガイダンスを教えてもらえますか?ありがとうございました!

以下で指摘するように、私は「<」の代わりに「>」を使用していました。しかし今、私がこのコードを実行すると:

import sys

def main():
        word = sys.stdin.readline()
        print(word)

main()

ターミナルの出力として空白行を取得するだけです

4

3 に答える 3

4

上記の私のコメントを拡張すると、次のコードでうまくいくと思います(注:これはPython 3ではなく、Python 2.7です。ただし、グーグルで簡単に説明しました)。

echo.pyの場合:

import sys
print sys.stdin.read()

次に、端末で次のように呼び出します。

python echo.py < test.txt

これにより、端末のtest.txtの内容がエコーされます。

于 2013-03-08T22:08:33.057 に答える
0

Python内で入力を処理する方法については、Pythonでstdinからどのように読み取るかで説明しています。

入力の最初の行は空白である可能性が高く、1行しか読んでいない場合は、次のことを試してください。

import sys
for line in sys.stdio:
    print line

また、* nixスタイルのユーティリティについては、一見の価値のあるモジュールfileinputについても言及する必要があります。

于 2013-03-08T22:06:36.193 に答える
0

リダイレクションとは異なるアプローチ:use fileinput

# myWC.py
def main():
    for line in fileinput.input():
        # Do something with the line

main()

呼び出す方法:

python myWC.py filename.txt # One file
python myWC.py file1.txt file2.txt file3.txt # multiple files

討論

  • fileinputファイルを開くすべての詳細を処理し、行ごとに読んでください
  • コマンドラインから複数の入力ファイルを指定できます
  • 特に、、 ..の詳細については、ドキュメントを参照しください。fileinput.filename()fileinput.lineno()
于 2013-03-08T23:19:17.943 に答える