【发布时间】:2017-03-10 20:00:02
【问题描述】:
以下代码生成
SystemError: 静态嵌套块过多
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。我只是对一个变量进行了非常广泛的检查并创建了两层深的文件。我的目标是为这个特定数据集的每个不同类创建单独的“.csv”文件。还有没有更好的方法来重写它,这样我就可以避免 SystemError?
【问题讨论】:
标签: python-2.7 csv if-statement block with-statement