我有一个用Tkinter编写的pythongui接口。该程序的主要目的是设置许多不同的变量,以便对高光谱图像(地理资料)进行最终计算。现在,一些更进一步的规范已经开发出来,用户希望能够主动地输入一些参数,以便对要平滑的像素组进行处理。这些信息将被输入到pythongui中,处理图像修改的C程序需要将其作为输入。因为图像可能很大,所以我想尽量避免总是用诸如
os.system(./my_C_Program param1 param2 param3....)
我更喜欢这样一个系统:一旦我调用了my_C_Program
,它就可以在将所有资源加载到内存后处于等待状态。我在想涉及getchar()
的东西是我想要的,但是我不知道如何从python得到输出my_C_Program
。我在SO上看到过一些类似的问题,但我无法确定这些场景对我的帮助有多大。在
如果getchar()
是答案,有人能解释一下stdout在多个终端打开的情况下是如何工作的吗?在
同时,我也在尝试让这个程序在linux/mac/windows上轻松地实现多平台。在
总而言之,我需要以下功能:
您应该首先使用Python's ^{} module ,而不是{a2}。一旦完成了这些,就可以更改它,这样C程序的
stdin
可以用Python编写,而不是继承Python脚本的stdin
。在之后,您可以让Python发送C程序可以解释的数据。例如,您可能希望使用一组JSON块,每行一个,比如Twitter's streaming API1;Python脚本生成一个请求字典,用^{} 序列化,然后写一个新行。C程序读取一行,解析JSON,并处理请求。在
1阅读文档后,它们的实现似乎要复杂一些。你可以采纳他们的做法,也可以照我描述的那样做。在
icktoofay和JasonFruit已经提出了一些不错的方法;我将建议进一步分离这两个程序。在
如果您将C程序编写为一个在TCP套接字上侦听请求和应答的服务器,则可以更轻松地更改客户机,使其支持多个同时运行的客户机,执行近乎无缝的客户机或服务器升级,而无需修改另一个,或者,您可以将C程序转移到更强大的硬件上,而不需要做的只是稍微修改一下配置。在
一旦您打开了一个监听套接字并接受了一个连接,程序的其余部分就可以继续进行,就好像您只是在标准输入和标准输出上进行交互一样。这很好地工作,但是您可能更喜欢将数据编码为某种标准格式,例如JSON或{a4},这样可以节省一些手动字符串处理。在
你能用pexpect做点什么吗?它允许您向命令行程序提供输入,等待来自命令行程序的指定提示后再继续。它还允许您读取干预的输出,因此您可以根据需要对其进行响应。在
如果你在Windows上(正如我从你的评论中注意到的那样),你可以试试winpexpect,这是类似的。在
相关问题 更多 >
编程相关推荐