2016-05-11 9 views
-2

私はSTDINからファイルを読み込まなければならない小さなプロジェクトを行っています。 私は教授に尋ねたことは、彼が教えてくれたことを意味しているのか分かりません。 私たちが一般的に行うようにファイルを開いて閉じる必要はありません。STDINファイルの読み込みクエリ

sFile = open ("file.txt",'r') 

ファイルを引数として渡す必要はありません。

私は彼が望むものが混乱しています。

+1

グーグル "python stdin"はこれに答えていました。 –

+0

あなたの教授に「STDINが何を意味するのかわからない」と言った場合、唯一の回答は「私たちが一般的に行っているようなファイルを開く必要はありません」です。**これは役に立たない回答です! *レスポンスは "プログラムの開始前に開かれていて、' sys.stdin'を介してアクセスできるファイル(多かれ少なかれ)でなければなりません。 –

答えて

0

stdinは、どの入力が得られるかによって、さまざまなソースから入力を受け取ります。あなたはどちらかのことができるようになどの入力ファイルとパイプスクリプトを

import sys 

text = sys.stdin.read() 

print text 

:この中

$ more file.txt | script.py 

は、説明のためのコードの非常に単純なビットを(:script.pyのは、それを呼びましょう)を考えますケースの場合、ファイルの内容であるパイプラインの最初の部分の出力は変数に割り当てられます(この場合は最終的に出力されます)。空のままにすると

(すなわち任意の追加入力なし)ので、同様に:それはあなたが入力機能と同様の入力を記述してみましょうし、定義された変数に書かれた入力を割り当て

$ python script.py 

(この入力 - ことに注意してください「ウィンドウ」は、明示的に閉じるまでCtrl + Dで終了します。

0

import sysの場合、sys.stdinは他のファイル(例:sys.stdin.read())と同じように使用できる「ファイル」になりますので、閉じる必要はありません。 stdinは「標準入力」を意味します。

0

投稿者this投稿を読んで、あなたと似ているようです。

この場合、 'stdin'はpythonスクリプトの後に来るコマンドラインの引数になるので、python script.py input_fileです。この入力ファイルは、作業中のデータを含むファイルになります。

だから、stdinの読み方が不思議に思えるかもしれません。いくつかのオプションがあります。 1は、上記のリンクスレッドで提案し、以下のようになります:

import fileinput 
for line in fileinput.input(): 
    #read data from file 

もちろん他の方法がありますが、私はそれにあなたを残しておきますね。詳細についてはリンク先をチェックしてください。

割り当てのコンテキストによっては、stdinが自動的にスクリプトに送信される場合があります。また、上記のように手動で行う必要があります。

関連する問題