28 lines
871 B
Python
28 lines
871 B
Python
"""解析子进程:python -m app.datafiles.worker <原文件> <输出目录>
|
|
|
|
结果以一行 JSON 写到 stdout:成功是 {"file": ParsedFile},文件本身的问题是 {"error": {"status", "message"}}
|
|
其他异常让进程以非零状态退出,堆栈留在 stderr,由上传流程记日志
|
|
"""
|
|
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
from app.datafiles.base import DataFileError
|
|
from app.datafiles.parse import parse_file
|
|
|
|
|
|
def main(source: str, out_dir: str) -> None:
|
|
try:
|
|
result = {
|
|
"file": parse_file(Path(source), Path(out_dir)).model_dump(mode="json")
|
|
}
|
|
except DataFileError as error:
|
|
result = {"error": {"status": error.status, "message": error.message}}
|
|
# 只输出 ASCII,不受控制台编码影响
|
|
sys.stdout.write(json.dumps(result))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main(*sys.argv[1:])
|