Следующий код создаетКак я могу переписать следующее, чтобы избежать ошибки «Nesting Blocks»?
SystemError: too many statically nested blocks
import csv
with open('complexdatset.csv','r'), open ('back.csv','w'), open ('buffer_overflow.csv','w'), open ('ftp_write.csv','w'), open ('guess_passwd.csv','w'), open ('imap.csv','w'), open ('ipsweep.csv','w'), open ('land.csv','w'), open ('loadmodule.csv','w'), open ('multihop.csv','w'), open ('neptune.csv','w'), open ('nmap.csv','w'), open ('perl.csv','w'), open ('phf.csv','w'), open ('pod.csv','w'), open ('portsweep.csv','w'), open ('rootkit.csv','w'), open ('satan.csv','w'), open ('smurf.csv','w'), open ('spy.csv','w'), open ('teardrop.csv','w'), open ('warezclient.csv','w'), open ('warezmaster.csv','w') as fin, back, buffer_overflow, ftp_write, guess_passwd, imap, ipsweep, land, loadmodule, multihop, neptune, nmap, perl, phf, pod, portsweep, rootkit, satan, smurf, spy, teardrop, warezclient, warezmaster:
writer0 = csv.writer(back, delimiter=',')
writer1 = csv.writer(buffer_overflow, delimiter=',')
writer2 = csv.writer(ftp_write, delimiter=',')
writer3 = csv.writer(guess_passwd, delimiter=',')
writer4 = csv.writer(imap, delimiter=',')
writer5 = csv.writer(land, delimiter=',')
writer6 = csv.writer(loadmodule, delimiter=',')
writer7 = csv.writer(multihop, delimiter=',')
writer8 = csv.writer(neptune, delimiter=',')
writer9 = csv.writer(nmap, delimiter=',')
writer10 = csv.writer(perl, delimiter=',')
writer11 = csv.writer(phf, delimiter=',')
writer12 = csv.writer(pod, delimiter=',')
writer13 = csv.writer(portsweep, delimiter=',')
writer14 = csv.writer(rootkit, delimiter=',')
writer15 = csv.writer(satan, delimiter=',')
writer16 = csv.writer(smurf, delimiter=',')
writer17 = csv.writer(spy, delimiter=',')
writer18 = csv.writer(teardrop, delimiter=',')
writer19 = csv.writer(warezclient, delimiter=',')
writer20 = csv.writer(warezmaster, delimiter=',')
for row in csv.reader(fin, delimiter=','):
if row[41] == 'back':
writer0.writerow(row)
elif row[41] == 'buffer_overflow':
writer1.writerow(row)
elif row[41] == 'ftp_write':
writer2.writerow(row)
elif row[41] == 'guess_passwd':
writer3.writerow(row)
elif row[41] == 'imap':
writer4.writerow(row)
elif row[41] == 'land':
writer5.writerow(row)
elif row[41] == 'loadmodule':
writer6.writerow(row)
elif row[41] == 'multihop':
writer7.writerow(row)
elif row[41] == 'neptune':
writer8.writerow(row)
elif row[41] == 'nmap':
writer9.writerow(row)
elif row[41] == 'perl':
writer10.writerow(row)
elif row[41] == 'phf':
writer11.writerow(row)
elif row[41] == 'pod':
writer12.writerow(row)
elif row[41] == 'portsweep':
writer13.writerow(row)
elif row[41] == 'rootkit':
writer14.writerow(row)
elif row[41] == 'satan':
writer15.writerow(row)
elif row[41] == 'smurf':
writer16.writerow(row)
elif row[41] == 'spy':
writer17.writerow(row)
elif row[41] == 'teardrop':
writer18.writerow(row)
elif row[41] == 'warezclient':
writer19.writerow(row)
elif row[41] == 'warezmaster':
writer20.writerow(row)
Мой вопрос почему он генерирует эту ошибку? Я искал в Интернете, но все примеры имели петли, вложенные в 20 уровней. У меня нет файлов ввода/вывода, вложенных в это много. Я просто делаю очень обширные проверки для одной переменной и создаю файлы на 2 уровня. Моя цель состояла в создании отдельных файлов .csv для каждого из разных классов этого конкретного набора данных. Также есть лучший способ переписать это, чтобы я мог избежать SystemError?
Извините. Это все равно генерирует ту же ошибку. Было ли это означать, что мне нужно будет использовать словарь для csv.writer и параметров? – user3255824