2017-04-17 2 views
0

でIは、入力としてファイル名を取得し、レポート内のデータの存在を解析し、GUIウィンドウに出力を与えるPythonコードを有します。レポートを解析しようとすると、範囲外のエラーのインデックスを取得しています。私はsys.argv [1]引数のためにエラーが発生していることを知っています。しかし、なぜsys.argv [1]がファイル名を格納できないのか理解できません。はQApplication(sys.argvの)sys.argvのための範囲外のインデックスを与えている[1]パイソン

私はすべてのPythonモジュールをアンインストールしましたが、私はエラーを投げていたパーサーをアンインストールしました。

私はまた、環境変数からのpythonのパスを削除しても、レジストリから、その後のpythonと私のパーサのソフトウェアを再インストールしています。

私も(python2.7.3と私のサードパーティ製のソフトウェア)の両方を再インストールした後、\%ユーザー名%\のAppData

USERSからデータを削除してしまった私はまた、\ python26をレジストリエントリHKEY_CLASSES_ROOTの\アプリケーションの変更を行いました。 Python26.File = "C:\ Python26 \ Python.exe" "%1"%* 環境変数の下にpythonパスを追加しました。

これは、他のマシン上で正常に動作しているとも、それはまで私のマシン上で正常に働いていた、その日は私は私のマシンから(私は3.xxのと2.7.3の両方を持っていた)のpython 3.xxのをアンインストールしました。

私は、エラーを取得していますFILE_NAME = file_pathに[0] sys.argは、[1]それは、[FILE_PATH = sys.argvの1を、エラーをスローする必要が存在しない場合、私は理解することはできませんよ、このライン :]この行。しかし、どのようにそれに文字列を格納することができるfile_pathリストサイズは1だけです。

誰かがこの問題の解決に私を助けることができます。前もって感謝します。

if __name__ == "__main__": 
app = QtGui.QApplication(sys.argv) 
file_path = sys.argv[1:] 
open_window = TelematicsFileViewer() 
open_window.show() 
file_name = file_path[0] 
path = file_path[1] 
open_window.parsed_file_out(file_name, path) 
sys.exit(app.exec_()) 
+0

sys.argvが長さ1の場合、sys.argv [1:]はエラーをスローしません。空のリストを返します。 – flyingmeatball

答えて

0

@flyingmeatballが、それはあなたが空のリストの最初の要素を参照するときにエラーが発生し、空のリスト[]を返します言うように。

だからスクリプトの実行の残りの部分を停止するために、エラーコード1で終了することができ、あなたのスクリプトで同じ高アップチェックに追加することができますことができます。

if len(sys.argv) < 4: # require file name and at least 2 args 
    print 'Include at least two arguments and retry.' 
    sys.exit(1) 
関連する問題