0

我已经编写了一个脚本,它通过调用另一个 python 模块来生成许多包含 json 数据的文件。然后,我希望能够在它们生成后导入它们并使用它们包含的数据进行处理。

问题是,当我尝试运行此脚本时,它抱怨文件不存在。我猜是因为 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 循环需要缩进成为 main 函数的一部分。就像现在一样,它在每次加载文件时运行。

于 2013-02-20T22:36:04.380 回答
0

你从不打电话 ships_levels_stats_generator.interface(),这大概是你创建文件的地方,丢失def main():

于 2013-02-20T22:38:31.590 回答