У меня есть несколько каталогов и много файлов в каждой директории, и я хочу перебирать каждую из них. Я также хочу читать только строку 5th
каждого файла, поэтому игнорировать первые четыре строки. Когда я запускаю скрипт, не игнорируя попытки игнорировать первые строки 4
, он работает нормально. Вот код:Итерирование файлов в цикле и пропуски данных и чтение после этого дает ошибку
import os
#find the present working directory
pwd=os.path.dirname(os.path.abspath(__file__))
#find all the folders in the present working directory.
dirs = [f for f in os.listdir('.') if os.path.isdir(f)]
for directory in dirs:
os.chdir(os.path.join(pwd, directory));
chd_dir = os.path.dirname(os.path.abspath(__file__))
files = [ fl for fl in os.listdir('.') if os.path.isfile(fl) ]
print files
for f in files:
f_obj = open(os.path.join(chd_dir, f), 'r')
for i in xrange(0,4): #ignore the first 4 lines
f_obj.next()
s=f_obj.readline()
print s
f_obj.close()
Этот сценарий дает следующее сообщение об ошибке: ValueError: Mixing iteration and read methods would lose data
Я не понимаю, почему питон думает, что я бы потерять некоторые данные, и я также хотел бы знать работу вокруг этого исправления это и почему он ее исправляет.
Вы изучали использование 'os.walk'? Это сделает то, что вы пытаетесь сделать более просто, и может устранить эту ошибку. –
@COpython: 'os.walk' отлично, но не устранит ошибку. –
@COpython Да, я знаю, я изменю это. На самом деле это был мой предыдущий вопрос о SO, я еще не изменил его. –