2016-11-07 112 views
2

我正試圖在python上編寫手機寄存器的代碼。我想從文本文件中讀取不同的聯繫人。列表中的每個聯繫人都需要大約4行,我試圖一次讀取一行(它有效),但我不知道是否有更簡單的方法,例如直接讀取4行,創建對象列表或列表,可能嗎?如果是這樣的話?從文本文件中讀取一次4行或幾行

+0

你可以用'每個範圍內(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

例如,聯繫人可以像這樣的文本文件 姓 用的名字 電話號碼 解決上述 所有的四行描述了一個人 –

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

因我的xrange (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