Я регулярно использую питон читать два или несколько файлов одновременно следующим образом:с помощью языка Python «с» в то время как чтение двух файлов одновременно с izip
for line1, line2 in izip(open(file1),open(file2)):
do something with line1 and line2
(с использованием izip из пакета itertools, потому что файлы я m, огромны, и я не хочу загружать весь файл в память).
Я недавно был преобразован в использовании with
при чтении файлов, которые, по-видимому лучше, так как он закрывает все открытые файлы, если ваша программа падает (по крайней мере, это то, что я понял из обсуждения здесь и в других местах):
with open(filename) as fh:
for line in fh:
do something with line
Однако я не могу понять, как объединить эти два метода. При попытке использовать izip в этом контексте говорится: 'itertools.izip' object has no attribute '__exit__'
, который я интуитивно понятен, является причиной того, почему использование with
настолько мощно.
Итак, есть ли способ использовать izip
с with
?
Я получаю сообщение об ошибке: 'с открытыми (имена [0]) как f1, открытые (имена [1]), как f2: SyntaxError: недействительный синтаксис' (обратите внимание, что по какой-либо причине ошибка синтаксиса, по-видимому, подбирает запятую) – lstbl
Ну, я не могу объяснить, что синтаксис верен. Проверьте предыдущую строку на наличие ошибок, иногда парсер отключает ее. – wim
Да, это странно, тот же код работает на другой машине ... Знаете ли вы, есть ли какая-либо зависимость от версии python? Кажется, он работает с python 2.7, но не на машине под управлением python 2.6 – lstbl