0

別の Python モジュールを呼び出して、json データでいっぱいの多数のファイルを生成するスクリプトをまとめました。次に、それらが生成された後にそれらをインポートし、それらに含まれるデータを処理できるようにしたいと考えています。

問題は、このスクリプトを実行しようとすると、ファイルが存在しないというエラーが表示されることです。open ステートメントがコード内のどこにあるかに関係なく、Python はコードを実行する前にすべてのファイルを開くかどうかをチェックするためだと思います。これを回避する方法はありますか?ジェネレーターがモジュールを呼び出して作成するまで、ファイルを開こうとしませんか? 以下のコード例:

#!/usr/bin/python

import os, sys
import json
import random
import ships_levels_stats_generator

def main():
    number = 10
    ships_levels_stats_generator.interface(str(number))

    for i in range(0, number):
        with open('../Test/attack%s.json' % i) as attack_json:
            attack_data = json.load(attack_json)
        with open('../Test/hp%s.json' % i) as hp_json:
            hp_data = json.load(hp_json)
        with open('../Test/repair%s.json' % i) as repair_json:
            repair_data = json.load(repair_json)

    for key in attack_data.iterkeys():
        if len(attack_data[key]) < 20:
            print "Under 20."
        elif len(attack_data[key]) < 30:
            print "Under 30."
        elif len(attack_data[key]) < 60:
            print "Under 50."
        elif len(attack_data[key]) < 80:
            print "Under 80."
        else:
            print "Over 80."
4

2 に答える 2

1

これは単なるインデントの問題です。メイン関数の一部としてforループをインデントする必要があります。現在のように、ファイルが毎回ロードされるときに実行されます。

于 2013-02-20T22:36:04.380 に答える
0

ships_levels_stats_generator.interface()おそらくファイルを作成する場所である、を呼び出すことはありません 。def main():

于 2013-02-20T22:38:31.590 に答える