2016-11-07 107 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