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

如何阻止Python在执行时检查文件,python,file,order-of-execution,Python,File,Order Of Execution,我已经编写了一个脚本,通过调用另一个python模块生成了大量的json数据文件。然后,我希望能够在生成它们之后导入它们,并使用它们包含的数据执行操作 问题是,当我尝试运行此脚本时,它会抱怨文件不存在。我猜是因为Python在执行代码之前会检查所有要打开的文件,而不管open语句在代码中的什么位置。有没有办法解决这个问题,让它在生成器调用模块创建文件之前不会尝试打开这些文件?示例代码如下: #!/usr/bin/python import os, sys import json import

我已经编写了一个脚本,通过调用另一个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."
#/usr/bin/python
导入操作系统,系统
导入json
随机输入
导入船舶\u等级\u统计\u生成器
def main():
数字=10
船舶等级统计生成器接口(str(编号))
对于范围内的i(0,编号):
以open('../Test/attack%s.json'%i)作为攻击\u json:
attack_data=json.load(attack_json)
打开('../Test/hp%s.json“%i”)作为hp_json:
hp_data=json.load(hp_json)
以open('../Test/repair%s.json'%i)作为repair\u json:
repair\u data=json.load(repair\u json)
对于密钥插入攻击_data.iterkeys():
如果len(攻击数据[键])小于20:
打印“20岁以下”
elif len(攻击数据[key])<30:
打印“30岁以下”
elif len(攻击数据[key])<60:
打印“低于50”
elif len(攻击数据[key])<80:
打印“80岁以下”
其他:
打印“超过80”

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

您从未调用
ships\u levels\u stats\u generator.interface()
,这可能是您创建文件的地方,但会丢失
def main():

抱歉,这只是我没有正确理解格式。它在实际代码中缩进。@KrisGriebe那么问题不在您发布的代码中。Python在执行
open
调用之前不会尝试打开任何文件,所以这不是问题所在。看不到完整的代码很难判断,但这可能是权限问题,也可能是代码有一个条件、空循环或返回,因此永远不会调用open。有趣的是,ships_levels_stats_生成器中的open语句如下所示:hp_table_file=open('../Test/hp%s.json'%number',w')Meh,这是因为我没有在这台计算机上创建测试目录,只是今天早上做了一个git拉取并进行了操作。我的错。