我有两个文件zipped
,其中包含以下内容:
for line in zip(open(file1), open(file2)):
# do-something
不幸的是,现在file2已经改变,并且在开头还有一行。是的,我可以手动(或使用额外的脚本/程序)摆脱它,但由于涉及的文件的实际数量很大,我宁愿在这个级别解决问题。
所以,我想要的是以下内容(如果打开(文件)是可订阅的,那将是有效的):
for line in zip(open(file1), open(file2)[1:]):
# do-something
答案 0 :(得分:4)
open
为你提供了一个迭代器,所以它不是“可订阅的”,但它可以轻松推进一个(内置next
内置2.6或更高版本,.next()
方法更早Python版本 - 我假设2.6或更高版本。)
所以你想说的是:
for line in zip(open(file1), open(file2)[1:]):
说,而不是:
f2 = open(file2)
next(f2)
for line in zip(open(file1), f2):
或者,如果你热衷于单行:
import itertools as it
for line in it.izip(open(file1), it.islice(open(f2), 1, None)):
在后一种情况下,由于我正在导入itertools
,我还利用其izip
方法而非内存浪费zip
内置;-)
答案 1 :(得分:2)
看看itertools:
for line in itertools.izip(
open(file1),
itertools.islice(open(file2), 1, None)
):
# do something
编辑:已从zip更改为itertools.izip函数。
答案 2 :(得分:1)
f1 = open(file1)
f2 = open(file2)
f2.next() # Skip the first line of file2 (used to be readline() - thanks, Alex)
for line in zip(f1, f2):
# do-something