使用Ruby popen3运行Python脚本而不显示终端

时间:2015-09-21 20:42:33

标签: python ruby

我目前正在使用以下Ruby代码运行用Python编写的后期处理脚本:

module Python

    require "open3"

    def self::runScript(script)
        Open3.popen3(script) do |stdin, stdout, stderr|
          stdout.read.split("\n").each do |line|
            puts "[python] stdout: #{line}"
          end
          stderr.read.split("\n").each do |line|
            puts "[python] stderr: #{line}"
          end
        end
        puts  'Script completed.'
    end
end

这样可以正常工作,但它当前会打开一个黑色的终端窗口,在后期处理完成之前一直保持打开状态。我怎么会不显示这个窗口?我希望一切都在后台默默发生。

澄清我需要能够默默地从Ruby运行Python脚本。仅限Windows。

1 个答案:

答案 0 :(得分:1)

我通常使用以下代码来运行外部程序并捕获输出,没有可见窗口或任务栏按钮。是的,我在窗户上。 它没有使用popen3,但你为什么要建立IO,为什么要使用宝石?

command = %Q{cmd.exe /C "dir /s"}
IO.popen(command+" 2>&1") do |pipe|
  pipe.sync = true
  lijn_nr = 0
  while lijn = pipe.gets
    puts lijn
  end
end