python - 在 swift 中将 python 交互式控制台作为子进程运行,并在启动后发送命令和接收结果
问题描述
我正在迈出 macOS 应用程序开发的第一步。我正在尝试在 Swift 上编写一个可以保持 python 交互式控制台打开的应用程序。有时我想发送到 python 命令并将结果返回给 swift,但不关闭 python 以保留我将发送的下一个命令的所有变量。
有没有办法做到这一点?
据我了解,我不能使用,Process()
因为当我运行任务时输入管道会自动关闭。
我可能需要使用带有 pty 和 tty 的伪终端,但我并不完全理解这个想法以及在哪里了解它。(或者,也许,我错了,还有另一种方法)
解决方案
如果你真的想使用 swift 的 python 代码,我强烈建议你避免使用这种方法。它非常容易出错,并且可能会受到限制且效率低下。你最好使用一些 python-c-api 的包装器,或者在 python 中编写一些小型服务器来接收来自 swift 的请求。
如果你仍然想这样做,一个简单的方法是使用 python 本身在 pty 中生成 python:
python -c "import pty, sys; pty.spawn(sys.argv[1:])" python
这将启动一个 python 控制台,该控制台读取和写入 stdio 而不是/dev/tty
.
推荐阅读
- r - 多个类似的 csv 文件中的相同功能并在单个 csv 文件中输出?
- firebase - 保存规则时出错 - NaN 行:规则集使用旧版本(版本 [1])。请更新到最新版本(版本 [2])
- c# - 如何在 C# 中用负号和正号为 40 位数字编码格式字符串?
- c++ - 即使功能有效,测试仍然失败
- javascript - React 将数组映射到下拉问题
- c# - OracleCommandBuilder.DeriveParameters() 抛出 OracleException:ORA-06564:对象不存在 ORA-06512:在“SYS.DBMS_UTILITY”
- javascript - 在mongodb中访问nodejs中的对象属性时未定义
- r - 无法通过 for 循环附加向量
- javascript - Google Pay for Passes 与 React 应用程序集成时出现 403 错误
- ios - React Select 输入缩放 - 无法在 iPhone XS 上禁用