Я хотел бы иметь возможность иметь ряд вложенных циклов, которые используют один и тот же файл pickle. Смотри ниже:Вложенные петли с Python cPickle
def pickleRead(self):
try:
with open(r'myfile', 'rb') as file:
print 'Reading File...'
while True:
try:
main = pickle.load(file)
id = main[0]
text = main[1]
while True:
try:
data = pickle.load(file)
data_id = data[0]
data_text = data[1]
coefficient = Similarity().jaccard(text.split(),data_text.split())
if coefficient > 0 and data_text is not None:
print str(id) + '\t' + str(data_id) + '\t' + str(coefficient)
except EOFError:
break
except Exception as err:
print err
except EOFError:
break
print 'Done Reading File...'
file.close()
except Exception as err:
print err
Второй (внутренний) цикл выполняется без каких-либо проблем, но первый раз делает одну итерацию, а затем останавливается. Я пытаюсь захватить одну строку за раз, а затем сравнить ее с каждой другой строкой в файле. Есть несколько тысяч строк, и я обнаружил, что модуль cPickle выполняет что-либо подобное. Проблема в том, что она ограничена в том, что выставлено. Может кто-то указать мне верное направление?
Не понимаю. Изменен ли файл, когда вы идете? –
Файл не редактируется, его просто читаем. – aeupinhere
Маленький совет: часть использования 'with' для обработки файлов заключается в том, что файл автоматически закрывается в конце; нет необходимости явно закрывать его самостоятельно. Кроме того, поскольку 'файл' является встроенным Python, вам рекомендуется использовать другое имя (для этого обычно используется' f'). –