我有一个具有c/c#能力的程序,我还有python。我希望这个程序更新一个文本文件,几乎在毫秒内,并让python在毫秒内读取该文本文件。我怎样才能做到这一点呢?
一个文本文件可以被另一个程序实时更新,也可以被python实时读取吗?有没有替代文本文件的替代方法呢?基本上,我想做的是使用python对来自该程序的实时数据进行一系列计算,并以commands.Can的形式将这些计算发送回程序,该文件不会关闭并重新打开,但仍在内存中更新?
发布于 2016-04-26 07:51:46
如果您使用subprocess.Popen从python启动C/C#进程,那么您的两个程序可以通过stdin和stdout管道进行通信:
c_program = subprocess.Popen(["ARGS","HERE"],
stdin = subprocess.PIPE, # PIPE is actually just -1
stdout= subprocess.PIPE, # it indicates to create a new pipe
stderr= subprocess.PIPE #not necessary but useful
)然后,您可以使用以下命令读取该进程的输出:
data = c_program.stdout.read(n) #read n bytes
#or read until newine
line = c_program.stdout.readline()请注意,尽管存在non blocking alternatives,但这两种方法都是阻塞方法。
还要注意,在Python3中,这些函数将返回bytes对象,您可以使用.decode()方法将其转换为str。
然后,要将输入发送到进程,您可以简单地写入stdin:
c_program.stdin.write(DATA)与上面的read类似,在Python3中,此方法需要一个bytes对象。在将其写入管道之前,可以使用str.encode方法对其进行编码。
我对C#的了解非常有限,但从有限的研究来看,你似乎可以使用read data from System.Console.In和write data to System.Console.Out,尽管如果你用C#编写了在终端上运行的程序,用于将数据写入屏幕和读取用户输入的相同方法也可以在这里工作。(您可以将.stdout想象为终端屏幕,并将数据python写入.stdin作为用户输入)
https://stackoverflow.com/questions/36852429
复制相似问题