Pythonic方法迭代文件而不是换行符

时间:2015-02-24 15:31:38

标签: python

要按行迭代文件,可以做 -

for line in f: 

(其中f是文件迭代器)。

我希望用逗号分隔的块来迭代文件,而不是用换行符分隔的块。我可以阅读所有行,然后用逗号分割字符串,但是有什么方法可以做到这一点吗?

3 个答案:

答案 0 :(得分:3)

在你去的时候迭代拆分然后你不需要存储所有的行:

for line in f: 
    for lines in line.split(","):

答案 1 :(得分:2)

使用字符串split()方法以逗号分割内容。

e.g。

input_file = "/home/vivek/Desktop/Work/stack_over/href_input.html"
#- Read File content.
with open(input_file, "rb") as fp:
    content_list = fp.read().split(",")

逐行迭代文件并通过吐出逗号

迭代每一行
>>> with open(input_file, "rb") as fp:
...    for f in fp:
...       for i in f.split(","):
...            i

答案 2 :(得分:0)

如果您确实需要扫描一个巨大的(例如1TB)单行文件并按分隔符处理项目,则可以按块读取文件,拆分它们并处理边界效果。这里有一个可以帮助它的发电机:

def split_file(file, delim, block_size=1024*1024):
    block = True
    last_item = ''
    while block:
        block = file.read(block_size)
        items = block.split(delim)
        for i in xrange(len(items)-1):
            item = items[i]
            if last_item:
                yield last_item + item
                last_item = ''
                continue
            if item:
                yield item
        last_item += items[-1]

您可以像这样使用它:

f = open("names.in.txt")
for name in split_file(f, ","):
    print name # process one item there