首页 > 解决方案 > 在 Python 中通过 json 格式发送脚本文件

问题描述

我正在研究 IMB IOT 应用程序。它基本上允许以 json 格式将命令或数据从一个设备发送到另一个设备。我开发了 python 脚本,它从一个系统发送一个字符串并在另一个系统上接收。它运作良好。现在我想处理脚本文件来代替字符串。但问题是 IBM IOT 仅支持 json 格式来转储有效负载。有没有办法将文件转换为 json 格式?

   i wrote a script which tries converting files to json format, doesn't work that perfect ! is there any other way to do that?

将脚本文件转换为 json 的代码

代码 输出

Is there any way to make it work better?

这是尝试通过 json 格式将文件发送到另一个系统的代码

act =input("Enter the key->")
file_path = input("\nPlease enter the file path->")
payload1 ={"computer1" : act}
update_file= open(file_path,'rb')
payload ={}
payload['context'] = base64.b64decode( update_file.read())
client.publishEvent("status",json,payload1,payload)

print(act)

print("command sent")
time.sleep(2)

在另一台计算机上

 def commandcallback(event):
   filename = payload['recieved_one]
   filedata = base64.base64decode(payload['context'])
   update_file =open(filename,'wb')
   update_file.write(filedata)
   update_file.close()

标签: pythonjsonfileibm-cloudiot

解决方案


您可以实现自定义消息编解码器,以您选择的任何方式传输文件内容。

请参阅涵盖使用自定义消息格式的文档主题。 https://ibm-watson-iot.github.io/iot-python/custommsg/ ...请记住,这些文档适用于待定的 1.0 版本(wiotp-sdk而不是ibmiotf),但在这方面它的工作原理几乎相同0.4 版本的ibmiotf.

这取决于您想从中得到什么,我建议如何处理:

您只对简单的文本文件感兴趣吗?

您可以编写一个简单的编解码器,将数据作为 utf-8 中的简单字符串(或您选择的任何编码)发送数据,为格式字符串注册编解码器utf8 并在发送事件时将其用作格式字符串,以便客户端知道这一点是您希望如何编码和决定消息负载,这意味着您在应用程序上获得的 event.data 将是文件内容的 UTF-8 编码字符串。

您想用它作为传输任何文件的一种方式,而不管内容类型如何?

您可以编写编解码器,使其简单地传递一个原始字节数组,该字节数组适合直接写入处理事件的应用程序上的文件(例如使用格式字符串raw),在这种情况下 event.data 将为您提供一个可以轻松使用的字节数组写入接收应用程序上的文件。

希望这能让您了解如何使用内置于客户端库中的自定义消息支持。当我周一回到办公室时,我会看看将这些作为示例添加到 repo 中。


推荐阅读