2013-02-20 3 views
0

다른 파이썬 모듈을 호출하여 json 데이터로 가득 찬 파일을 생성하는 스크립트가 있습니다. 그런 다음 생성 된 데이터를 가져 와서 포함 된 데이터로 처리합니다.파이썬 실행시 파일 검사를 중지하는 방법

이 스크립트를 실행하려고하면 문제가 있습니다.이 스크립트는 존재하지 않는 파일에 대해 불평합니다. 왜냐하면 파이썬은 코드를 실행하기 전에 열려있는 모든 문장을 검사하기 때문이다. 이 문제를 해결할 수있는 방법이 있습니까? 그래서 생성기가 모듈을 생성 할 때까지 파일을 열려고하지 않을 것입니까? 아래 예제 코드 :

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

답변

1

들여 쓰기 문제입니다. for 루프는 주 기능의 일부로 들여 쓰기해야합니다. 지금은 파일이로드 될 때마다 실행됩니다.

+0

죄송 잃게되는, ships_levels_stats_generator.interface()를 호출하지, 그 날이에 서식 권리를 얻는 아니다. 실제 코드에서 들여 쓰기됩니다. –

+0

@KrisGriebe 그러면 게시 한 코드에 문제가 없습니다. 파이썬은'open' 호출을 실행할 때까지 어떤 파일도 열려고하지 않기 때문에 문제가되지 않습니다. –

+0

전체 코드를 보지 않고도 말하기는 어렵지만 사용 권한 문제이거나 코드에 조건부, 빈 루프가 있거나 반환 될 수 없기 때문에 반환 될 수 있습니다. –

0

당신은 결코 당신이 파일을 만들 경우 presumeably의 def main():

+0

나는 결코 그것을 부르지 않는다는 것을 의미합니까? 바로 거기에 .... –