Swift   发布时间:2022-04-29  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何编写一个可以与swift可执行文件的输入和输出进行通信的python脚本?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以,我有一个简单的 swift程序,一个@L_675_4@,main.swift程序,看起来像这样.

import Foundation

var past = [String]()

while true {
    let input = readLine()!
    if input == "close" {
        break
    }
    else {
        past.append(input)
        print(past)
    }
}

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

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

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

import subprocess

subprocess.call("./Recommender",sHell=TruE)
f = subprocess.call("foo",sHell=TruE)
subprocess.call("close",sHell=TruE)

print(f)

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

编辑:

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

import subprocess
print(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脚本?所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。