2017-08-07 53 views
0

我有以下的驗證程序:的print()輸出與異常後延遲到控制檯,打破記錄順序

def validate_schema(self, name, data, schema_filename): 
    Logging.message("validating {0} against schema".format(name)) 
    with open(schema_filename) as f: 
     schema = json.load(f) 
     resolver = jsonschema.RefResolver(
      "file:///{0}/".format(os.path.abspath(schema_filename.rsplit('/', 1)[0])), schema 
     ) 
     jsonschema.validate(data, schema, resolver=resolver) 
     Logging.ok() 

類記錄包含:

@staticmethod 
def ok(): 
    print("OK") 

@staticmethod 
def message(msg): 
    print("> " + msg, end='... ') 

當架構驗證失敗時,我得到異常首先是文本,然後是「驗證...」消息。

爲什麼會發生這種情況以及如何保持輸出順序?

回答

1

法拉盛stdout的伎倆

@staticmethod 
def message(text): 
    print("> " + text, end='... ') 
    sys.stdout.flush()