【问题标题】:Calling saxon from python 3.7从 python 3.7 调用撒克逊人
【发布时间】:2020-02-19 16:48:29
【问题描述】:

我正在尝试从 python 调用撒克逊人。在我在 python 2.x 中使用 os.system(command) 之前一切正常,但是在 2.7 和 3.7 之间发生了一些变化。我的代码不再有效。我曾尝试使用“subprocess.call(command)”和“subprocess.run(command)”,但似乎都不起作用。以下是之前的工作:

command = "java -jar C:\\saxon\\saxon9he.jar -o:\"" + directory + "\\_new.xml\" " + "-xsl:\"" + xslDir + "\" -s:\"" + newFile + "\""
os.system(command)

该命令在 cmd 提示符下运行良好(当我用实际文件替换变量时)。但是在 3.7 中没有任何工作。提前致谢。

【问题讨论】:

  • 说出它是如何失败的总是一个好主意......通过shell命令运行转换总是效率很低,即使你可以让它工作(因为成本启动 Java VM、编译样式表等)。在 Saxon/C 中使用新的 Python 语言绑定会更好;或者通过对 REST 转换服务的 HTTP 请求进行转换也很有效。
  • 基本上会快速弹出一个cmd窗口,然后关闭,并没有创建预期的新XML文件。

标签: python-3.x saxon


【解决方案1】:

您好,最新的 Saxon/C 版本支持 Python 3。请参阅:详细信息:https://www.saxonica.com/saxon-c/index.xml

【讨论】:

  • 我完成了这个过程,但是当我运行py saxon-setup.py build_ext -if 命令时,我得到了这个:``` Traceback(最近一次调用最后一次):文件“saxon-setup.py”,第 3 行,在来自 Cython.Distutils 的 中 import build_ext ModuleNotFoundError: No module named 'Cython' ```
  • 您使用的是 Linux 还是 Windows?在任何情况下,cython 大部分都被安装来为 python 构建 Saxon/C。见:saxonica.com/saxon-c/documentation/index.html#!starting/…
  • 我在 Windows 上,我确实安装了 cython。我不确定为什么会收到错误消息。
  • 用于 python 3 的 Cython?此外,它必须在文档中提到的 powershell 中运行
猜你喜欢
  • 2023-03-10
  • 2019-03-11
  • 1970-01-01
  • 1970-01-01
  • 2015-06-09
  • 2016-01-25
  • 2023-03-25
  • 2010-10-02
  • 1970-01-01
相关资源
最近更新 更多