Есть файл в формате .txt. По определенным условиям необходимо строки раскидать по разным файлам. делаю так:
base=open('sms.txt').readlines() #список строк исходного файла minm=0 #количество строк, одного формата pl=0 #количество строк другого формата for line in base: if len(line)>30 and line[12:15]!="Пол": minm+=1 elif len(line)>30 and line[12:15]=="Пол": pl+=1 minus=int(input('Предлагается к отправке %s сообщений, из них %s с отрицательными балансами и %s с положительными. Сколько дней будем рассылать минусы? '%(pl+minm,minm,pl))) min_list=[open(str(q+1)+'.txt','w') for q in range(minus)] # список файлов, количество файлов=числу дней на рассылку, т.е. объекту minus a=[[]for q in range(minus)] #список из списков строк, которые будут записываться в файл, len(list((a))==minus if input('Каждый день одинаковое количество (да/нет)? ')=='да' or 'Да': #на данный момент выбирается только вариант "Да", поэтому другие варианты не рассматриваем evrdaymin=minm//minus #количество строк на каждый файл lastdaymin=minm-(minus-1)*evrdaymin #количество смс для последнего файла if evrdaymin==lastdaymin: #смотреть можно только это условие, т.к в данный момент объект minus всегда равен 1. x=0 for line in base: if len(line)>30 and line[12:15]!="Пол": if len(list(a[x]))==evrdaymin: #если количество строк в списке для x-го файла = количеству строк на каждый файл... min_list[x].writelines(a[x]) #...то записываем получившийся список в текущий файл... x+=1 #... и переходим к следующему a[x].append(line) #записываем строку в список для нового файла base.remove(line) #удаляем строку из исходного списка else: #если список на текущий файл не переполнен, то записываем строку в текущий список и её удаляем из исходного списка a[x].append(line) base.remove(line) print('В день рассылается по ' + str(evrdaymin) + ' смс.') min_list[x].writelines(a[x]) else: #если количество файлов>1 pass
вставлял в код счетчик записанных номеров, соответственно, после a.append(line), после записи всех строк в список ‘a’ вставлял:
print('%s %s %s' % (i,len(list(a[x])),evrdaymin)
Подскажите, пожалуйста, в чем причина?
Заранее благодарен