フォーラムの助けを借りて、これらのデータをスクリプトに書き込むスクリプトに加えて、ファイルを並べ替えて複数の Excel ファイルからデータを読み取るスクリプトを作成しました。Excelドキュメントをソートすると、出力は次のようになります。
C:/eclipse/TST-folder\kop_tstdoc.xls
C:/eclipse/TST-folder\tstdoc.xls
その後、これらのデータをスクリプトに読み込み、関心のあるセル値を抽出し、これらのデータを *"val_dict"* という辞書に書き込みます。この dict は次のように構築されます。
val_dict[filename] = [weightvalue, lenghtvalue, speedvalue]
完成した dict は、ますます多くのファイルと値で構成され、すでに 50 個の .xls ファイルを超えています。dict の出力は次のようになります。
{'C:/eclipse/TST-folder\\kop_tstdoc.xls': [10.0, 21.0, 30.0],
'C:/eclipse/TST-folder\\tstdoc.xls': [3.0, 5.0, 5.0]}
たとえば、テストモデリングに適したサイズにデータをスケーリングする関数で「weightvalue」を使用したいと考えています。以下は、各ドキュメントの「 weightvalue 」とユーザー定義の「inputweight」に基づいて、スケーリング係数として x1 値を計算する関数 *"scale_weight"* です。これまでのところ、dict からweightvalueを取得する代わりに、ファイル名、リスト全体などを使用してしまいました.誰かが私にヒントを教えてくれますか、またはこれを行う方法の別のアプローチを教えてくれますか?以下のスケーリングのスクリプト:
def scale_weight(): # Repeat for each value.
for filename in val_dict:
for x1 in range(len(val_dict)):
values = val_dict.get(weightvalue) #want "weightvalue" from dict here
x1 = eval(inputweight) / eval(values)
return x1
for x1 in scale_weight():
print x1
このスクリプトで必要なのは、辞書内の各ファイル名のx1値を返すことです。x1値は、ユーザー定義の入力重みを各 Excel ファイルの重み値で割った値に等しくなります。
アップデート
val_dict output looks like this:
{'C:/eclipse/TST-folder\\kop_tstdoc.xls': [10.0, 21.0, 30.0],
'C:/eclipse/TST-folder\\tstdoc.xls': [3.0, 5.0, 5.0]}
変更されたスクリプト:
inputweight = int(raw_input('Insert weight'))
def scale_weight():
for filename in val_dict:
values = val_dict.get(filename)[0]
x1 = float(inputweight) / float(int(values))
return x1