我想编写一个在 windows shell 中运行的程序。要运行它,我使用 Enfocus Switch“执行命令”。该程序有两个参数,arg1 是 xml,arg2 是 xsd,XML 模式定义文件。当程序完成时,它应该返回 exitcode 0,因为这是 switch 所期望的。当它失败时退出代码 1。除此之外,我希望它打印我以 JSON 格式(如 Object.
到目前为止我的代码:
import xmlschema
import sys
sysargs = sys.argv
path2xml = sysargs[1]
path2xsd = sysargs[2]
def xsdValidation(path2xml,path2xsd ):
my_schema = xmlschema.XMLSchema(path2xsd)
validationResult = ""
if path2xml[-3:] == "xml" and path2xsd[-3:] == "xsd":
try:
valid = my_schema.is_valid(path2xml)
validationResult = my_schema.validate(path2xml)
except Exception as e:
validationResult = str(e)
sys.stdout.write( {"file":str(path2xml), "valid": valid, "validationResult":validationResult } )
sys.exit(0)
xsdValidation(path2xml, path2xsd)
我使用“pyinstaller --onefile validateXML.py”编译脚本并成功运行。但是当我在 cmd 或 powershell 中启动 validateXML.exe 时,例如“./validateXML.exe c:/user/Documents/XMLvalidation/test.xml c:/user/Documents/XMLvalidation/test.xsd” 会出现一些丢失的文件错误。