2014-04-18 89 views
0

我自動執行涉及電子表格中漏洞的長時間任務。但是,我注意到這些漏洞的「建議」有時相當長。用於python的優秀CSV模塊?

用於python的CSV模塊在編寫新行時似乎會截斷某些文本。有什麼辦法來防止這種情況的發生?我只是在推薦(這是很多文字)會出現的地方看到「注意:這個字段已被截斷」。

+0

請您介紹一些示例代碼,輸入和輸出? –

+1

當Python讀取CSV文件時,字段是被Python還是Excel截斷的?如果在記事本中打開文件,內容是否被截斷? – RemcoGerlich

+0

是的。如果我「貓」,我看到的文字說「此字段被截斷」以及。 – user3528254

回答

0

的總體目標是做到這一點:

  1. 導入主電子表格具有確認狀態,一切都跟上時代的
  2. 攝取含有漏洞的新的電子表格不具備的conf狀態/嚴重性最新。
  3. 將第二張電子表格與第一張電子表格進行比較。它將更新第二個電子表格的嚴重性級別,然後寫入新文件。
  4. 新創建的csv文件可以複製並粘貼到主電子表格中。與第一個電子表格匹配的所有漏洞現在具有相同的嚴重性級別/確認狀態。

即使在Ruby出於某種原因,我注意到的是,這些漏洞中的一些建議有長文本;因此,當由於某種原因創建CSV文件時,它會被截斷。下面是我爲示範快速編寫的示例代碼片段:

#!/usr/bin/python 
from sys import argv 
import getopt, csv 

master_vulns = {} 
criticality = {} 

############################ Extracting unique vulnerabilities from master file 
contents = csv.reader(open(argv[1], 'rb'), delimiter=',') 

for row in contents: 
    if "Confirmation_Status" in row: 
     continue 
    try: 
     if row[7] in master_vulns: 
      continue 
     if row[7] in master_vulns: 
      continue 
     master_vulns[row[7]] = row[3] 
     criticality[rows[7]] = row[2] 
    except Exception: 
     pass 

############################ Updating confirmation status of newly created file 
new_contents = csv.reader(open(argv[1], 'rb'), delimiter=',') 
new_data = [] 
results = open('results.csv','wb') 
writer = csv.writer(results, delimiter=',') 

for nrow in new_contents: 
    if "Confirmation_Status" in nrow: 
     continue 
    try: 
     if nrow[1] == "DELETE": 
      continue 
     vuln_name = nrow[7] 
     vuln_status = nrow[3] 
     criticality = criticality[vuln_name] 
     vuln_status = master_vulns[vuln_name] 
     nrow[3] = vuln_status 
     nrow[2] = criticality 
     writer.writerow(nrow) 
    except Exception: 
     writer.writerow(nrow) 
     pass 

results.close()