2017-11-27 9 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

ご了承ください。例外が発生した場合、定義によって「成功した実行」になることはできません。 – 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つの列があり、ファイルの1行が最後の行であることを期待しているからですない。入力ファイルの末尾に空白行があると思われますが、真ん中のデータがダフかもしれません。 (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

これは入力ではなく、入力の画像です。コードの画像が許可されていない理由は、それらを実行できないことです。入力の画像は同じ理由で使用されるものではありません。あなたのプログラムは画像ではなくアスキーデータを期待しています。私が指摘したように、あなたが報告する問題は、コード内ではなくデータ内にあることがほぼ確実です。あなたの入力をコードとして、コードとして出力し、スタックトレースを含むエラーメッセージ全体を報告してください。それ以外の場合は、問題を再現することはできません。 – BoarGules

+0

あなたはあなたの推測で絶対に正しいと思いました」そして、あなたが得るべき唯一の理由は、csvファイルに4つの列があり、1行のファイル(推測では、最後のもの)が期待していないからです。"入力ファイルを手動で編集してコードを実行しましたが、最後の行が無視されるか考慮されないなどの方法があります(リストの最後から削除される可能性があります)? –

関連する問題