2016-11-07 2 views
2

私はpythonで携帯電話のレジスタのコードを書こうとしています。私は、テキストファイルからさまざまな連絡先を読むことになっています。リストにあるすべての連絡先は約4行かかりますが、一度に1行を読み込もうとしましたが、簡単な方法があるかどうか疑問に思います。たとえば、4行を直接読み込んでオブジェクトリストまたはリストを作成し、出来ますか?もしそれがどうですか?テキストファイルから一度に4行または数行を読み返す

+0

(4 ): 'その後、その4本の行を読んで –

+0

もっと説明できますか?それはいいでしょう:) –

+0

私が作ったコードを見せたら助けになるのですか?このコードは、ファイルの読み書きが可能で、ユーザーがファイルを編集できるようになっています。 –

答えて

0

私はあなたが「約4行」で何を意味するかわからないんだけど、ここでのスタートだ:

with open('thefile.txt') as infile: 
    while True: 
     parts = [infile.readline() for _ in range(4)] 
     if not any(parts): 
      break 
     part1, part2, part3, part4 = parts 
+0

は、たとえば、テキストファイル 姓 forename 電話番号 これらすべての4本のライン上の アドレスに次のようになります。連絡先はxrangeの中で、私のために人 –

0

は、あなたが読むことを試みるファイルがcontacts.txtであり、それは現在のパスで

だと仮定
 with open('contacts.txt','r') as f: 
      lines = f.readlines() 
     for i in xrange(0,len(lines),4): 
      contact_source = lines[0:i] 
      BuildObject(contact_source) 
+0

を説明(0、len(lines)、4): xは何を意味しますか? –

+0

in python 2.x xrangeは、リストを作成する範囲と比較して生成器であり、forループで使用する方が効率的(スペース単位)です。機能上、xrange()はrange()と等価です。 – SeedofWInd

0

あなたはおそらく、(あなたが最初にここにファイル全体を読む必要はありません)このようなジェネレータ関数を使用することができます

def multilinefile(fn, no_lns): 
    f, lines = open(fn), [] 
    while '' not in lines: 
     lines = map(lambda s: f.readline(), range(no_lns)) 
     if lines[0] == '': 
      break 
     yield ''.join(lines) 

for line in multilinefile(your_file, 4): 
    print line 
あなたは範囲内の各 `使用することができます
関連する問題