2013-03-11 10 views
-1

가져온 .csv 파일을 반복하고 열의 각 값을 변수에 할당하려고합니다. 아이디어는 Shodan API의 검색을 수행하기 위해 그 변수를 사용하고, 검색 결과를 화면에 출력 한 다음, 열의 다음 행에있는 값으로 이동하고, 변수에 할당하고, 검색을 수행하므로 에. 여기 사전 값을 반복하면서 변수에 할당

import csv 

# Initialize the API 
from shodan import WebAPI 
api = WebAPI("My Shodan Key") 

# Open csv file 

with open('C:\pythonfiles\sccm.csv', 'rb') as reader: 
    sccmtable = csv.reader(reader, delimiter=';') 
    #for row in sccmtable: 
    #print ', '.join(row) 

for row in sccmtable: 
    for value in row: 
     edbresults = api.exploitdb.search(value) 
     print (edbresults) 

것 같습니다 .... 내가 지금까지 발견 한 것과 함께 자갈길을 사용해보세요 내가 새로 가져온의 내용을 인쇄 할 수있는이 올바른 시작하는 경우 등 csv를 화면에 표시하지만 다음 단계를 수행하는 방법을 모르겠습니다. 어떤 도움이라도 대단히 감사합니다.

감사합니다. 개별적으로 각 행의 각 값을 검색하기 위해

+0

오류가 발생합니까? 뭐야? 각 행의 각 값을 검색 하시겠습니까, 아니면 각 행 검색에 대해 모든 값을 결합하고 싶습니까? 'row'는 값의리스트입니다.'api.exploitdb.search'는 문자열리스트가 아니라 문자열을 기대합니다. – shx2

+0

@ shx2 답변 해 주셔서 감사합니다. 당신은'api.exploitdb.search'가 문자열을 기대하고'row'가 값들의리스트라는 것을 알지 못했습니다. 각 행의 각 값을 개별적으로 검색하고 싶습니다. 어떤 도움을 주셔서 감사합니다. – user2145207

답변

1

이 수행

for row in reader: 
    for value in row: 
     edbresults = api.exploitdb.search(value) 
     print (edbresults) 
+0

다시 한번 감사드립니다! 내가 제공 한 것을 연결했는데 다음과 같은 오류가 발생했습니다. "ValueError : 닫힌 파일에 대한 I/O 작업"저는 직장에서 긴 하루 하루를 보내고 있습니다. 내일 더 많은 연구를 할 수 있습니다. 이게 무슨 일이 일어날 지 스스로 알았어. 어떤 아이디어? – user2145207

+0

일부 Google-fu 이후에이 파일을 발견했습니다. "파일과 유사한 동작을 의식하는 것이 중요합니다. 쓰기가 끝나면 다시 읽으려는 시도가 필요합니다. 같은 반복기를 두 번 실행하려고하면 결과가 나타납니다. 두 번째로 아무 값도 가져 오지 않음 '''StringIO.getvalue()'''는 StringIO 버퍼의 전체 내용으로 새로 생성 된 문자열 객체를 반환합니다. " 이 접근법이 도움이된다고 생각하십니까? – user2145207

+0

원본 질문에 들여 쓰기를 수정하고 오류의 전체 추적을 포함하십시오. 그러면 솔루션을 쉽게 찾을 수 있습니다. – shx2

0

당신의 with 문이 범위를 벗어나 두 번째 질문에 대해서는, 파일은 폐쇄됩니다. 아직 범위 안에있는 내용을 읽어야합니다. 단순히 들여 쓰기 만하면됩니다.

with open('C:\pythonfiles\sccm.csv', 'rb') as reader: 
    sccmtable = csv.reader(reader, delimiter=';') 
    #for row in sccmtable: 
    #print ', '.join(row) 

    for row in sccmtable: 
     for value in row: 
      edbresults = api.exploitdb.search(value) 
      print (edbresults) 
+0

고마워요! 지금 일하고있는 것 같습니다. 내 CSV에는 각각 응용 프로그램의 이름을 포함하는 375 개의 행이 있습니다. 스크립트를 실행하면 처음 네 개는 결과를 반환하지 않습니다. 다섯 번째는 좋은 결과이고 다음은 두 가지 결과가없는 좋은 검색 결과를 반환합니다. 그런 다음 무언가가 폭발합니다. – user2145207

+0

Traceback (최근 호출 마지막) : 파일 "C : \ Users \ wilsond \ workspace \ Desktop 패치 Looking \ ModuleOne.py", 줄 22, edbresults = api.exploitdb.search (값) 파일 "빌드 \ bdist.win32 \ egg \ shodan \ api.py ", 줄 105, 검색 파일"build \ bdist.win32 \ egg \ shodan \ api.py ", 줄 159, _request에 파일"C : \ Python27 \ lib \ urllib2.py ", 줄 126, urlopen에서 return _opener. 열기 파일에서 "C : \ Python27 \ lib \ urllib2.py"파일 406 번 열 응답 = meth (req, 응답) – user2145207

+0

파일 "C : \ Python27 \ lib \ urllib2.py ", 줄 519, http :'http', 요청, 응답, 코드, msg, hdrs)의 http_response 파일"C : \ Python27 \ lib \ urllib2.py ", 오류 445 번째 줄 return self._call_chain (* args) 파일 "C : \ Python27 \ lib \ urllib2.py", 줄 378, _call_chain result = func (* args) 파일 "C : \ Python27 \ lib \ urllib2.py"527 줄 http_error_default에 HTTPError (req.get_full_url(), code, msg, hdrs, fp) urllib2.HTTPError : HTTP 오류 503 : 서비스를 일시적으로 사용할 수 없음 – user2145207