【发布时间】:2010-08-17 20:52:12
【问题描述】:
我正在尝试用 python 编写一个程序以在 C++ 中运行一个程序。它工作不正常,所以我尽可能制作了最基本的版本。 C++ 程序仅从标准输入中获取一个字符串,然后将其打印出来。 Python代码编写如下:
import popen2, string, StringIO
fin, fout = popen2.popen2("PyTest")
msg = ur"Hello, world!"
print msg
fout.write(msg)
print fin.readline()
然而,输出看起来像这样:
Hello, world!
Hello,
我一直看到的问题是空格似乎将字符串分开,即使它是字符串文字。我不确定在这里做什么。有什么建议吗?
【问题讨论】:
-
你为什么不用
subprocess.Popen? -
C++ 程序是否正在刷新标准输出?
-
当你自己调用C++程序时,它会返回想要的输出吗?即,
./PyTest Hello, world!返回Hello, world!? -
详细说明 S Lott 的评论:popen2:“自 2.6 版起已弃用:此模块已过时。使用子流程模块。特别检查用子流程模块替换旧功能部分。” docs.python.org/library/subprocess.html#subprocess-replacements
-
说来话长,但基本上我只是在使用 python 2.4。不,我刚刚意识到我的 C++ 代码没有达到我的预期。我忘记了 cin 将空格作为多个字符串输入处理。所以它一次只接收一个。傲慢是我的失败!
标签: python string whitespace popen stdio