一个单独的C程序的动态python用户输入

2024-09-28 23:25:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用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上轻松地实现多平台。在

总而言之,我需要以下功能:

  1. 用户从pythongui中选择某些输入
  2. 这个输入变成了C程序的输入
  3. 这个C程序可以处理更多的输入,而不必从头再运行(避免文件I/O等)。在

Tags: 用户图像程序目的规范参数tkintermy
3条回答

您应该首先使用Python's ^{} module,而不是{a2}。一旦完成了这些,就可以更改它,这样C程序的stdin可以用Python编写,而不是继承Python脚本的stdin。在

之后,您可以让Python发送C程序可以解释的数据。例如,您可能希望使用一组JSON块,每行一个,比如Twitter's streaming API1;Python脚本生成一个请求字典,用^{}序列化,然后写一个新行。C程序读取一行,解析JSON,并处理请求。在

1阅读文档后,它们的实现似乎要复杂一些。你可以采纳他们的做法,也可以照我描述的那样做。在

icktoofayJasonFruit已经提出了一些不错的方法;我将建议进一步分离这两个程序。在

如果您将C程序编写为一个在TCP套接字上侦听请求和应答的服务器,则可以更轻松地更改客户机,使其支持多个同时运行的客户机,执行近乎无缝的客户机或服务器升级,而无需修改另一个,或者,您可以将C程序转移到更强大的硬件上,而不需要做的只是稍微修改一下配置。在

一旦您打开了一个监听套接字并接受了一个连接,程序的其余部分就可以继续进行,就好像您只是在标准输入和标准输出上进行交互一样。这很好地工作,但是您可能更喜欢将数据编码为某种标准格式,例如JSON或{a4},这样可以节省一些手动字符串处理。在

你能用pexpect做点什么吗?它允许您向命令行程序提供输入,等待来自命令行程序的指定提示后再继续。它还允许您读取干预的输出,因此您可以根据需要对其进行响应。在

如果你在Windows上(正如我从你的评论中注意到的那样),你可以试试winpexpect,这是类似的。在

相关问题 更多 >