2011-06-24 8 views
1

pythonに新しく、ファイルI/Oの縄を学ぼうとしています。この形式では大(200万ライン)ファイルからのラインを引いての作業MacのPython readline()

:それはメモリにファイル全体を引っ張っていないので、私は(そのreadlineのを読んでいる

56fr4 
4543d 
4343d 
hirh3 

)が最適です。しかし、私がdocumentationを読もうとすると、Unixだけと思われますか?私はMacを使います。

ファイル全体をメモリにロードせずにMacでreadlineを使用できますか?単純にファイル内の数字3を読み込む構文は何でしょうか?ドキュメントの例は私の頭の中に少しあります。ここで

編集

はコードを返す関数です:

def getCode(i): 
    with open("test.txt") as file: 
     for index, line in enumerate(f): 
      if index == i: 
       code = # what does it equal? 
       break 
    return code 
+1

のReadlineを端末キーボード入力を扱うためのライブラリです。それはファイルを読むこととは関係ありません。 –

+1

@DanielRoseman混乱しているfile.readline()とreadlineモジュールについて、私のコメントを参照してください。 –

答えて

11

あなたはreadlineは必要ありません。

with open("data.txt") as file: 
    for line in file: 
     # do stuff with line 

これは、ファイル全体のライン・バイ・ラインを読みます一度にすべてではありません(すべてのメモリが必要なわけではありません)。ファイルの読み込みを中止する場合は、目的の行が見つかったのでbreakを使用してループを終了します。あなたは、参照文書から

with open("data.txt") as file: 
    for index, line in enumerate(file): 
     if index == 2: # looking for third line (0-based indexes) 
      # do stuff with this line 
      break # no need to go on 
+0

私は3行目をどのように返すのですか?構文を理解していることを確認したいだけです。 – some1

+0

@ some1:番号で特定の行を見つける方法を示すために私の答えを更新しました。 –

+0

非常に助かりました、ありがとうございました。私はおそらく、おそらく長い間、readlineの方法を使いこなしていたでしょう。 – some1

0

注:MacOS Xの上のreadlineモジュール はlibeditの ライブラリを使用して実装することができ、あなたがしたい行のインデックスを知っている場合は、これを使用GNU readlineの代わりに。 libeditの設定ファイル は、GNU readlineと異なる です。 構成文字列をプログラムでロードする場合は、 readlineに "libedit"というテキストがあるかどうかを確認することができます。 と入力して、 をGNU readlineとlibeditで区別します。 SpaceC0wb0y

@

+1

リンク先のドキュメントに貼り付けていただきありがとうございますが、その意味を理解していません。それが私が投稿した理由です。 – some1

+1

[ファイルオブジェクトのreadlineメソッド](http://docs.python.org/library/readline.html)と[履歴/補完付きのテキスト入力のためのreadlineモジュール]の間には、混乱が生じるようです。 (http://docs.python.org/library/readline.html)。 –

0

+1また、行うことができます:

f = open('filepath') 
f.readline() # first line - let it pass 
f.readline() # second line - let it pass 
third_line = f.readline() 
f.close()