要按行迭代文件,可以做 -
for line in f:
(其中f是文件迭代器)。
我希望用逗号分隔的块来迭代文件,而不是用换行符分隔的块。我可以阅读所有行,然后用逗号分割字符串,但是有什么方法可以做到这一点吗?
答案 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