2012-02-16 12 views
1

私はこの些細なコードがあります:どのように私はreadlineメソッドを使用できますか?

from sys import argv 


script, input_file = argv 

def fma(f): 
    f.readline() 



current_file = open(input_file) 


fma(current_file) 

txtファイルの内容は次のとおりです。あなたは私がヒット知っているので "

Hello this is a test.\n 
I like cheese and macaroni.\n 
I love to drink juice.\n 
\n 
\n 

"

私は、\ nは文字を入れますテキストエディタに入力してください。

私が達成したいのは、すべての行とすべての\ n文字を取得することです。

問題は、スクリプトを実行しても何も得られないということです。私は間違って何をしているのですか?上記のように実行するにはどうしたらいいですか?

答えて

1

あなたが実際に何をしたいプリティ特定はf.readlines、ないf.readlineです。私はより効率的にあなたのファイルを開くにはwithコンテキストマネージャを使用しています

# module start 
from __future__ import with_statement # for python 2.5 and earlier 

def readfile(path): 
    with open(path) as src: 
     return src.readlines() 

if __name__ == '__main__': 
    import sys 
    print readfile(sys.argv[1]) 
# module end 

注(それはあなたのためのファイルを閉じるの仕事をしていません)。 Python 2.6以降では、先頭に空想的なimport文を使用する必要はありませんが、古いPythonを使用している人にはこれを含める習慣があります。

+0

私はここから読んでいました:http://docs.python.org/tutorial/inputoutput.html f.readline()を見ると、次のようになります。 >>> f.readline() 'これはファイルの最初の行です。\ n' >>> f.readline() 'ファイルの2行目\ n' >>> f 。readline() 'あなたの返信は非常に役に立ちましたが、リストを返します。すべての行を返す上記のf.readlinesの例とまったく同じようにしたいのですが、行の中には\ n文字しか持たないものもあります。 – 0101amt

+1

ええ、私は知っている...それは実際にf.readlineを使用することは実際には珍しいことです...それは実際に長い時間前からのホールドオーバーです。実際には、f.readlinesもそうです。これを行う適切な方法は、ファイルを閉じることを適切に処理してメモリリークを回避するために、**をsrc **文としてopen(path、mode)を使用して** srcオブジェクトを単純に反復する連続ライン。 – michaelfilms

+0

うわー!とても速く返信してくれてありがとう。 – 0101amt

2

あなたの関数は、行を読み取り、それを何もしません:

def fma(f): 
    f.readline() 

あなたはf.readline()はあなたを与えることを、文字列を返すために必要があると思います。対話型のプロンプトでは、生成された最後の値が自動的に出力されますが、これは.pyファイル内のPythonコードの動作方法ではありません。

1
def fma(f): 
    f.readline() 

f.readline()機能であるように、それはあなたがその値で何かを「行う」する必要があり、この場合にはファイルからの行の値を返す:あなたの機能ではありません

def fma(f): 
    print f.readline() 
1

何かを返す。

def fma(f): 
    data = f.readline() 
    return data 

f.readline()ファイルから1行を読み出します。改行文字(\ n)は文字列の最後に残され、ファイルが改行で終わらない場合はファイルの最後の行で省略されます。

1

スクリプトは次のようにする必要があります:

from sys import argv 
script, input_file = argv 

def fma(f): 
    line = f.readline() 
    return line 

current_file = open(input_file) 
print fma(current_file) 
+0

これはどのように正確に役立ちますか?今度は値がfmaから返され、何も起こりません。 –

+0

これは変数に戻されました。 ) – Morlock

関連する問題