在Python中通过json格式发送脚本文件

在Python中通过json格式发送脚本文件,python,json,file,ibm-cloud,iot,Python,Json,File,Ibm Cloud,Iot,我正在开发IMB IOT应用程序。它基本上允许以json格式从一个设备向另一个设备发送命令或数据。我开发了python脚本,它从一个系统发送字符串,然后在另一个系统上接收。而且效果很好。现在我想处理脚本文件而不是字符串。但问题是IBMIoT只支持json格式来转储有效负载。有没有办法将文件转换为json格式 i wrote a script which tries converting files to json format, doesn't work that perfect ! is

我正在开发IMB IOT应用程序。它基本上允许以json格式从一个设备向另一个设备发送命令或数据。我开发了python脚本,它从一个系统发送字符串,然后在另一个系统上接收。而且效果很好。现在我想处理脚本文件而不是字符串。但问题是IBMIoT只支持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的代码

下面是尝试通过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()

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

有关自定义消息格式的使用,请参见文档主题。 ... 请记住,这些文档是针对即将发布的1.0版本wiotp sdk而不是ibmiotf的,但在这方面,它在ibmiotf的0.4版本中的工作原理基本相同

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

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

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

是否要将此用作传输任何文件的方式,而不考虑内容类型

您可以编写编解码器,使其只需在处理事件的应用程序上传递适合直接写入文件的原始字节数组(例如,使用格式字符串raw),在本例中,event.data将为您提供一个字节数组,可轻松用于在接收应用程序上写入文件


希望这能让您了解如何使用客户端库中内置的自定义消息支持。周一回到办公室后,我会在回购协议中添加这些示例。

有没有办法将文件转换为json格式?是的,但是。。。哪些文件?请将相关代码添加到您的问题中,如果链接转到404,那么问题就死了。任何python脚本文件。。请检查附带的屏幕截图。我已经创建了脚本,试图将正在运行的脚本转换为json文件,并暂时将其保存为文本格式。。但是我想把它转换成json,发送到另一个系统。我正在使用ibmiotf库..json.loadsobj,json.dumpsobjt非常感谢您的回复。是的,wiotp sdk到目前为止还不可用!将0.9.0版本推送到pypi,这样您就可以获取它。。。它包括对支持基于事件的文件传输的原始和utf8消息格式的新内置支持。请参见此处的示例:
 def commandcallback(event):
   filename = payload['recieved_one]
   filedata = base64.base64decode(payload['context'])
   update_file =open(filename,'wb')
   update_file.write(filedata)
   update_file.close()