簡體   English   中英

解析安全矩陣電子表格-NoneType不可迭代

[英]Parsing Security Matrix Spreadsheet - NoneType is not Iterable

嘗試在它們各自的應用程序和服務中嵌套“是”和“是”。 這樣,當針對特定區域到區域序列的請求進入時,可以對此邏輯進行檢查以驗證接受的請求。

我試過調用Decision_List [Zone_Name] [yes_no] .update,我嘗試過,追加它是列表類型而不是字典但沒有更新方法嗎?

Base_Sheet = range(5, sh.ncols)
Column_Rows = range(1, sh.nrows)

for colnum in Base_Sheet:
   Zone_Name = sh.col_values(colnum)[0]
   Zone_App_Header = {sh.col_values(4)[0]:{}}
   Zone_Svc_Header = {sh.col_values(3)[0]:{}}
   Zone_Proto_Header = {sh.col_values(2)[0]:{}}
 Zone_DestPort_Header = {sh.col_values(1)[0]: {}}
 Zone_SrcPort_Header = {sh.col_values(0)[0]: {}}


Decision_List = {Zone_Name:{}}


for rows in Column_Rows:
    app_object   = sh.col_values(4)[rows]
    svc_object   = sh.col_values(3)[rows]
    proto_object = sh.col_values(3)[rows]
    dst_object   = sh.col_values(2)[rows]
    src_object   = sh.col_values(1)[rows]
    yes_no       = sh.col_values(colnum)[rows]

    if yes_no not in Decision_List[Zone_Name]:
        Decision_List[Zone_Name][yes_no] = [app_object]
    else:
        Decision_List[Zone_Name]=[yes_no].append(app_object)

我希望它顯示如下信息

Decision_List{Zone_Name:{yes:[ssh, ssl, soap], no: 
                 [web-browsing,facebook]}}

我仍然想知道為什么我不能在那個特定的yes_no鍵whos值是一個列表上調用append方法。

但是與此同時,我做了各種各樣的工作。 我創建了一個集合作為鍵,並給了yes_no作為值。 這將使我可以將許多無類型的值與一組應用程序,端口,服務等的鍵配對。然后,我可以搜索yes值,並從中創建其他字典以獲取邏輯。

任何更好的想法我都在聽。

for rownum in range(0, sh.nrows):
    #row_val is all the values in the row of cell.index[rownum]  as determined by rownum
    row_val = sh.row_values(rownum)
    col_val = sh.col_values(rownum)
    print rownum, col_val[0], col_val[1: CoR]
    header.append({col_val[0]: col_val[1: CoR]})
print header[0]['Start Port']

dec_tree = {}
count = 1
Base_Sheet = range(5, sh.ncols)
Column_Rows = range(1, sh.nrows)

for colnum in Base_Sheet:
    Zone_Name = sh.col_values(colnum)[0]
    Zone_App_Header = {sh.col_values(4)[0]:{}}
    Zone_Svc_Header = {sh.col_values(3)[0]:{}}
    Zone_Proto_Header = {sh.col_values(2)[0]:{}}
    Zone_DestPort_Header = {sh.col_values(1)[0]: {}}
    Zone_SrcPort_Header = {sh.col_values(0)[0]: {}}


    Decision_List = {Zone_Name:{}}


    for rows in Column_Rows:
        app_object   = sh.col_values(4)[rows]
        svc_object   = sh.col_values(3)[rows]
        proto_object = sh.col_values(3)[rows]
        dst_object   = sh.col_values(2)[rows]
        src_object   = sh.col_values(1)[rows]
        yes_no       = sh.col_values(colnum)[rows]



        for rule_name in Decision_List.iterkeys():
            Decision_List[Zone_Name][(app_object, svc_object, proto_object)]= yes_no

再次感謝。

我認為還有一個更好的方法是使用collections.defaultdict

通過這種方式,它將確保我能夠按照我最初的意圖附加到特定的yes_no上。

for colnum in Base_Sheet:
    Zone_Name = sh.col_values(colnum)[0]
    Zone_App_Header = {sh.col_values(4)[0]:{}}
    Zone_Svc_Header = {sh.col_values(3)[0]:{}}
    Zone_Proto_Header = {sh.col_values(2)[0]:{}}
    Zone_DestPort_Header = {sh.col_values(1)[0]: {}}
    Zone_SrcPort_Header = {sh.col_values(0)[0]: {}}


    Decision_List = {Zone_Name:defaultdict(list)}


    for rows in Column_Rows:
        app_object   = sh.col_values(4)[rows]
        svc_object   = sh.col_values(3)[rows]
        proto_object = sh.col_values(2)[rows]
        dst_object   = sh.col_values(1)[rows]
        src_object   = sh.col_values(0)[rows]
        yes_no       = sh.col_values(colnum)[rows]

        if yes_no not in Decision_List[Zone_Name]:
            Decision_List[Zone_Name][yes_no]= [app_object, svc_object, proto_object, dst_object, src_object]
        else:
            Decision_List[Zone_Name][yes_no].append([(app_object, svc_object, proto_object,dst_object, src_object)])

然后,我可以將這些值設置為一組,並根據需要附加它們

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM