Python中文
首页
教程
问答
标签
搜索
登录
注册
如何从J中的标准输入中读取python二进制字符串
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个使用协议缓冲区的python应用程序,还有一个使用协议缓冲区的Java应用程序。我要做的只是能够将消息(序列化后的二进制字符串)打印到标准输出。为此,我在Python应用程序中执行以下操作:</p> <blockquote> <p>def printMessage(self, protobuf_msg): </p> <blockquote> <p>data = protobuf_msg.SerializeToString()</p> <p>sys.stdout.write(data)</p> <p>sys.stdout.flush()</p> </blockquote> <p>def main():</p> <blockquote> <p>protobuf_msg = create_message()</p> <p>controller.printMessage(protobuf_msg)</p> </blockquote> </blockquote> <p>在这之后,我希望通过管道输出这个输出(pythonpytonapp | javajavaapp),用javaApp获取这些数据并解析它。我尝试了两种方法,使用Protobuf API进行此操作:</p> <blockquote> <p>protected ProtobufMsg receiveMsg() throws Exception{ </p> <blockquote> <p>ProtobufMsg message = null;</p> <p>message = protobuf_msg.parseFrom(System.in);</p> <p>return message;</p> <p>}</p> </blockquote> </blockquote> <p>我还尝试通过以下方式对BufferedInputStream执行此操作:</p> <blockquote> <p>protected ProtobufMsg receiveMsg() throws Exception{ </p> <blockquote> <p>ProtobufMsg message = null;</p> <p>byte[] data = receiveFromStd();</p> <p>message = protobuf_msg.parseFrom(data);</p> <p>return message;</p> <p>}</p> </blockquote> <p>public byte[]receiveFromStd()引发异常{</p> <blockquote> <p>BufferedInputStream input = new BufferedInputStream(System.in);</p> <p>byte[] out = new byte[1024];</p> <pre><code>int i=0; System.out.println("Entering While"); while((out[i] = (byte)input.read())!= -1){ i++; </code></pre> <p>System.out.println("One byte readed");</p> <p>}</p> <pre><code>byte[] data_out = new byte[i]; for(int l=0; l<data_out.length; l++){ data_out[l]=out[l]; } return data_out; </code></pre> <p>}</p> </blockquote> </blockquote> <p>很明显我做错了什么,但我没意识到我做错了什么, 因为它留在里面输入.读取()... 在</p> <p><strong>编辑:</strong> 我已经决定改变策略,现在我首先得到数据包的大小,然后是我使用的数据包的大小输入.读取(字节[])函数。。。 我使用的脚本如下:</p> <pre><code>FIFO_FILE=/tmp/named_$$ # unique name ($$ is the PID of the bash process running this script) mkfifo $FIFO_FILE export FIFO_FILE # export the env variable ant run & # start a background process that reads the env variable and reads the fifo cat > $FIFO_FILE # reads the standard input and writes to the fifo rm $FIFO_FILE </code></pre> <p>我称之为:<code>python pythonApp.py | ./script</code>。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我不能评论Python方面,但如果它是一个二进制消息,你可以这样做</p> <pre><code> FileInputStream in = new FileInputStream(fileName); message = Extension01.Message.parseFrom(in); </code></pre> <p>或者如果是分隔消息:</p> ^{pr2}$ <p>不需要以字节形式读入</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
当用户用PYTHON设置一个或一个不带值的URL时,他们怎么能输入一个/a的代码呢?
8 回答
当用户登录到站点时,如何显示不同的导航栏
9 回答
当用户登录时,在Flask中向用户显示处理结果
9 回答
当用户的Flask会话结束时,我如何从Redis后端中移除所有Celery结果?
6 回答
当用户的Okta配置文件字段当前为blan时,更新该字段
10 回答
当用户的付款逾期2天时,从Django模型检索数据
3 回答
当用户的消息以问号结尾时,如何让机器人说些什么?
7 回答
当用户的系统上可能也安装了Python 2.7时,如何在用户的系统上运行Python 3脚本?
1 回答
当用户确定打印数量时,使用Matplotlib打印动画
10 回答
当用户离开时是否可以删除整个网页?
3 回答
当用户给出一个单词时如何打印?
5 回答
当用户继续更改TKin中的值(使用trace方法)时,使用Entry并更新输入的条目
10 回答
当用户编辑表单字段时,从Django时间字段中删除秒数
5 回答
当用户被更改时,消息不会来自web套接字
4 回答
当用户访问表单时,如何使表单为只读,而不具有更改权限
5 回答
当用户试图更改对象的值时,使用描述符类引发RuntimeError
6 回答
当用户调整GUI的大小时,是否有方法更改GUI内容的大小?
2 回答
当用户调整风的大小时,pythontkinter小部件的大小会不均匀
10 回答
当用户购买某个类别时,是否查找其他类别的销售?
10 回答
当用户转到上一页时,Django和芹菜插入操作
5 回答