2017-11-27 17 views
-2

텍스트 코드를 추가했습니다. 불편을 끼쳐 드려 죄송합니다. 게시물에 터미널 출력을 포함하고 싶었습니다.IndexError 가져 오는 중 : 실행 후 인덱스가 범위를 벗어났습니다.

edit2 : 모든 이미지를 제거했습니다. 여기에 최신 코드 + 입력/출력이 텍스트 형식으로 입력 파일에서 오류가 발견되었지만 코드로 해결할 수 없습니다. 끝에는 완전히 빈 행이 있습니다. 파일을 수동으로 편집하고 코드를 제거하기 위해 백 스페이스를 수동으로 편집하면 어쨌든이 문제를 해결할 수 있습니다. 내 csv 파일은 자동으로 airodump에 의해 생성되며 형식을 제어 할 수 있는지 여부는 알 수 없습니다.

루트 01.csv

BSSID, First time seen, Last time seen, channel, Speed, Privacy, Cipher, Authentication, Power, # beacons, # IV, LAN IP, ID-length, ESSID, Key 

1C:5F:2B:0A:02:58, 2017-12-02 04:01:06, 2017-12-02 04:02:34, 6, 54, WPA2, CCMP TKIP,PSK, -85,  654,  155, 0. 0. 0. 0, 6, Halbos, 



Station MAC, First time seen, Last time seen, Power, # packets, BSSID, Probed ESSIDs 

40:40:A7:67:90:0E, 2017-12-02 04:01:16, 2017-12-02 04:02:33, -1,  63, 1C:5F:2B:0A:02:58, 

80:3F:5D:F9:1F:AB, 2017-12-02 04:01:22, 2017-12-02 04:02:09, 0,  557, 1C:5F:2B:0A:02:58, 

station_value.csv

Station MAC, First time seen, Last time seen, Power, # packets, BSSID, Probed ESSIDs 

40:40:A7:67:90:0E, 2017-12-02 04:01:16, 2017-12-02 04:02:33, -1,  63, 1C:5F:2B:0A:02:58, 

80:3F:5D:F9:1F:AB, 2017-12-02 04:01:22, 2017-12-02 04:02:09, 0,  557, 1C:5F:2B:0A:02:58, 

pwr_value.csv

Power 

    -1 

    0 
: 여기
#!/usr/bin/env python 

import time 
import csv 

#def nonblank_lines(f): 
# for l in f: 
#  line = l.rstrip() 
#  if line: 
#   yield line 

with open('root-01.csv', 'r') as csv_file: 
csv_reader = csv.reader(csv_file) 
with open('station_value.csv', 'w') as station_file: 
    csv_writer = csv.writer(station_file, delimiter = ',') 
    for skip in range(4): 
     next(csv_reader) 
    for line in csv_reader: 
     csv_writer.writerow(line) 

with open('station_value.csv', 'r') as csv_file2: 
# for line in nonblank_lines(csv_file2): 
csv_reader2 = csv.reader(csv_file2) 
with open('pwr_value.csv', 'w') as pwr_file: 
    csv_writer2 = csv.writer(pwr_file, delimiter = ',') 
    for line in csv_reader2: 
     try:  
      print(line)  
      csv_writer2.writerow([line[3]]) 
     except Exception as details: 
      print('Invalid data:',line,'rejected due to',details) 

은 텍스트 형식으로 내 입력 파일입니다

station_value.csv 점점 괜찮아요 문제가 발생합니다 (내가 아는 한) stio_value.csv 줄 [3] 값을 얻고 싶습니다 및 때문에 새 파일 pwr_value.csv 쓰기 때문에 발생합니다. 이전 줄과 크기가 같지 않은 스테이션 파일 끝의 여분의 줄. 스택 추적을 얻으려고했지만 디버깅 도구가 스택 추적을 열 때마다 빈 공백을 계속 표시 할 수 없었습니다.

오류가 있어도 왜 pwr_value 파일이 생성되는지 이해할 수 없습니까?

+1

포스트 코드를 영구적 검증 트랩을 둘 수 있었다! – Igle

+0

BTW, 예외가 발생하면 정의에 따라 "성공적인 실행"이 될 수 없습니다. – DeepSpace

+0

[질문 할 때 SO의 코드 이미지를 업로드하지 않는 이유는 무엇입니까?] (http://meta.stackoverflow.com)/questions/285551/why-may-i-not-upload-images-of-code-on-so-ask-a-question) –

답변

0

스택 추적을 게시하지 않았고 샘플 데이터 파일을 게시하지 않았으므로 여기서 몇 가지 가정을해야합니다. 하지만 그 오류를 일으킬 수있는 유일한 곳은 9 번 줄입니다. 그 이유는 csv 파일에 4 개의 열이 있어야하고 파일의 한 줄 (마지막으로 추측)이 수행하기 때문입니다. 아니. 나는 당신이 입력 파일의 끝 부분에 후행 공백 라인을 가지고 있다고 의심하지만, 중간에 더프 데이터일지도 모른다. (timgeb 알 등) print 문은 좋은 것입니다,하지만 당신은하지 그림으로, 텍스트로, 예를 들어, 코드에서

for line in csv_reader: 
    try: 
     print(line[3]) 
    except Exception as details: 
     print('Invalid data:',line,'rejected due to',details) 
+0

답장을 보내 주셔서 감사합니다. 게시물에 csv 파일을 포함 시켰습니다. 처음에는 거기에 있었지만 분명히 허용되지 않은 코드가 있었기 때문에 삭제했습니다. 불편을 끼쳐 드려 죄송합니다. –

+0

이것은 입력이 아니며 입력 사진입니다. 코드의 사진을 허용하지 않는 이유는 Google에서 실행할 수 없기 때문입니다. 그리고 입력의 사진은 같은 이유로 사용되지 않습니다. 프로그램이 그림이 아닌 ASCII 데이터를 기대하고 있습니다. 앞에서 언급했듯이, 여러분이보고 한 문제는 코드에있는 것이 아니라 데이터에 있습니다. 코드로 입력을 게시하고 코드로 출력하고 스택 추적을 포함한 전체 오류 메시지를보고하십시오. 그렇지 않으면 문제를 재현 할 수 없습니다. – BoarGules

+0

당신은 추측에 절대적으로 맞았습니다. "csv 파일에 4 개의 열이 있고 파일의 한 줄 (마지막으로 추측)이 기대하지 않기 때문에 그 이유는 얻을 수있는 유일한 이유입니다."수동으로 입력 파일을 편집했는데 코드가 작동했지만 마지막 행이 무시되거나 고려되지 않았습니다 (목록의 끝에서 삭제 될 수 있습니다). –