【问题标题】:Better way to execute ruby file using Python and How to get ruby console output when ruby file is run from python?使用 Python 执行 ruby​​ 文件的更好方法以及从 python 运行 ruby​​ 文件时如何获取 ruby​​ 控制台输出?
【发布时间】:2010-10-04 23:21:08
【问题描述】:

我正在使用 python 构建一个独立的。 这个独立应该执行一个 ruby​​ 文件。

我已阅读这篇文章 - http://www.decalage.info/python/ruby_bridge 我使用了 os.system() 效果很好。 但我这里有个问题。 如果 ruby​​ 文件有一些错误,文件会简单地终止而不会出错。 你能告诉我如何获取 ruby​​ 控制台输出,以便我可以在我的独立设备中显示相同的内容。

【问题讨论】:

    标签: python ruby


    【解决方案1】:

    你可以使用子进程模块

    cmd="ruby myrubyscript.rb"                                                                          
    p=subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)                              
    output, errors = p.communicate()                        
    

    然后使用output 变量

    请注意,您的 Python 程序将取决于您是否安装了 Ruby。如果可能,尝试用 Python 做所有事情。

    【讨论】:

    • 您好 user131527,感谢您的回复。但似乎有一个问题。输出没有被打印出来。例如我们获取一个打印“Hello world”的 ruby​​ 文件。现在我使用上面的代码并打印输出。不显示输出。错误也是一样 - 我的意思是考虑 ruby​​ 文件有语法错误并尝试打印错误。
    • 确保导入子流程模块。确保你的 Ruby 脚本实际打印出一些东西。
    • 我已经导入了 subprocess 模块并且 ruby​​ 文件正在运行。如果我打印输出 -> 显示空白并且如果我打印错误 -> 不显示
    • 它工作了.. 我只需要添加 stdout 和 stderr 作为 PIPE。
    猜你喜欢
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    相关资源
    最近更新 更多