如何阻止Python在执行时检查文件

时间:2013-02-20 22:29:10

标签: python file order-of-execution

我有一个脚本,我把它放在一起,通过调用另一个python模块生成一些充满json数据的文件。然后,我希望能够在生成它们之后导入它们并使用它们包含的数据执行操作。

问题是,当我尝试运行此脚本时,它会抱怨文件不存在。我想因为Python会在执行代码之前检查要打开的所有文件,无论open语句在代码中的哪个位置。有没有办法绕过这个,所以它不会尝试打开文件,直到生成器调用模块创建它们之后?示例代码如下:

#!/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."

2 个答案:

答案 0 :(得分:1)

这只是一个缩进问题:for循环需要缩进才能成为主函数的一部分。就像现在一样,它在每次加载文件时运行。

答案 1 :(得分:0)

您永远不会调用ships_levels_stats_generator.interface(),这可能是您创建文件的位置,丢失def main():