如何编写一个可以与swift可执行文件的输入和输出进行通信的python脚本?

如何编写一个可以与swift可执行文件的输入和输出进行通信的python脚本?,第1张

概述所以,我有一个简单的 swift程序,一个文件,main.swift程序,看起来像这样. import Foundationvar past = [String]()while true { let input = readLine()! if input == "close" { break } else { past.ap 所以,我有一个简单的 swift程序,一个文件,main.swift程序,看起来像这样.

import Foundationvar past = [String]()while true {    let input = readline()!    if input == "close" {        break    }    else {        past.append(input)        print(past)    }}

我想编写一个python脚本,可以将输入字符串发送到此程序,然后返回该输出,并让它随着时间的推移运行.我不能使用命令行参数,因为我需要保持swift可执行文件随时间运行.

我已经尝试过os.system()和subprocess.call()但它总是卡住,因为它们都没有给swift程序提供输入,但它们确实启动了可执行文件.我的shell基本上等待我的输入卡住了,没有从我的python程序获得输入.

这是我尝试的最后一个python脚本:

import subprocesssubprocess.call("./Recommender",shell=True)f = subprocess.call("foo",shell=True)subprocess.call("close",shell=True)print(f)

有关如何正确执行此 *** 作的任何想法?

编辑:

所以现在我有了这个解决方案

import subprocessprint(True)channel = subprocess.Popen("./Recommender",shell = False,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)print(True)channel.stdin.write(("foo").encode())channel.stdin.flush()print(True)f = channel.stdout.readline()channel.terminate()print(f)print(True)

但是,它停止从stdout读取任何想法如何解决这个问题?

解决方法 我认为以下代码是您正在寻找的.它使用管道,因此您可以在不使用命令行参数的情况下以编程方式发送数据.

process = subprocess.Popen("./Recommender",shell=True,stdin=subprocess.PIPE)process.stdin.write(('close').encode())process.stdin.flush()
总结

以上是内存溢出为你收集整理的如何编写一个可以与swift可执行文件的输入和输出进行通信的python脚本?全部内容,希望文章能够帮你解决如何编写一个可以与swift可执行文件的输入和输出进行通信的python脚本?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1003138.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存