下面的代碼生成如何重寫以下內容以避免出現「嵌套塊」錯誤?
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層深。我沒有嵌入太多的文件I/O。我只是對一個變量進行非常廣泛的檢查,並創建2個層次的文件。我的目標是爲這個特定數據集的每個不同類創建單獨的'.csv'文件。還有更好的方法來重寫這個,所以我可以避免SystemError?
對不起。這仍然會產生相同的錯誤。這是否意味着我需要爲csv.writer和選項使用字典? – user3255824