2017-02-28 13 views
2

私はこのコードをPythonで使用しています。Pythonサイクルが動作しません(xlwt)

python 

import xlwt 

#== change variables according to requirements ==# 

numoftopcol = 5 

numoftestcases = 4 

coltext = ['Test Case', 'Test Name', 'Duration', 'Factual Result', 'Result (Pass/Fail)'] 

testN = ['void','Get Counter Result', 'Read Stats', 'Client Initialization', 'Start Server'] 

#== change variables according to requirements ==# 

styleH = xlwt.easyxf('font: name Arial, bold on, color-index blue;') 

styleH.font.height = 400 

stylee = xlwt.easyxf('font: name Arial') 

wb = xlwt.Workbook() 

ws = wb.add_sheet('Test Case Overview') 

c = 0 

numoftopcol += 1 

for c in range(c,numoftopcol): 

    ws.write(0, c, coltext[c], styleH), 

    ws.col(c).width = 7000 


import random 

c = 1 

numoftestcases += 1 

for c in range(c,numoftestcases): 

    strC = str(c), 

    ws.write(c,0,'TC-'+strC,stylee), 

    ws.write(c,1,testN[c],stylee), 

    ws.write(c,2,'DUR',stylee), 

    ws.write(c,3,'RandomStr',stylee), 

    randomint = random.randint(0,1), 

    if randomint == 0: 

      ws.write(c,4,'PASS',stylee) 

    else: 

      ws.write(c,4,'FAIL',stylee) 

ここで、最初のサイクルは正常に動作しています(styleHを持つサイクル)。 2つ目は動作していません(stylee)。デバッグ私は、c = 1とnumoftestcases = 5を見つけました。したがって、もし< numoftestcaseまたは1 < 5なら、サイクルは正常に動作しているはずですか?

明らかにそうではありません。 cmd(2番目のサイクル)で次のエラー出力が表示されます。

forTraceback (most recent call last): File "", line 2, in IndexError: list index out of range

Traceback (most recent call last): File "", line 3, in TypeError: cannot concatenate 'str' and 'tuple' objects

この問題は何ですか? 以前はこれがうまくいきました。私はサイクルコードを変更しなかったが、現在は動作していない。

2番目のサイクルで1行目にprint(c)を入れてみましたが、出力は1つしかありませんでした。

xlsファイルを確認すると、最初のサイクルだけがスプレッドシートに書き込まれました。

私はこのコードをテキストファイルに保存していますので、このコマンドをcmdで実行する必要があるときはいつでも思い出すことができます。

答えて

3

まず:範囲外のインデックス:範囲外のこのインデックスの利回りへのアクセス今...あなたは、リストのlenである5にnumoftopcolを定義するが、ちょうどループの前に、あなたはそれをインクリメント...

エラーの根本的な原因は、Excel座標は1から始まりますが、Pythonリストは0でインデックス付けされています。私は0からnまでのループを行い、あなたがやっていることすべて+1を行うのではなく、xlwtの呼び出しを1だけ追加します。

第二:連結エラー:あなたは、任意のスタックトレースを投稿しませんでしたが、

strC = str(c), 

tupleを作成します。そして、次の行:

ws.write(c,0,'TC-'+strC,stylee), 
tuplestrを追加しようとし

+0

私はそれを見ることができますが、これをどのように修正できますか? numoftopcolは問題の原因ではありませんが、numoftestcasesは問題ありません。 – Unit1

+0

'numoftopcol'が範囲外で、最初の要素をスキップしています。あなたがより良い診断をしたい場合は、スタックトレースを投稿する –

0

私は問題が何かを発見しました。私はcnumoftestcasesのデータ型をintに変換しなければなりませんでした。

int(c) 
int(numoftestcases) 

ケースを解決しました。それは今働いている。

関連する問題