[英]How do I get wget output in ruby?
我需要从ruby运行以下代码:
system "wget http://example.org/some/large/archive.zip"
当我运行此命令时,我看到
将输出重定向到“ wget-log”。
我需要做tail -f wget-log
以查看进度
如何在运行ruby进程的终端中看到wget输出?
我试过了
system "wget -O - http://example.org/some/large/archive.zip > dev/null"
但这没有帮助
也许还有其他选择可以下载带有ruby的大型档案并查看进度?
您可以使用Ruby的标准库中的Open3模块。
这使您可以访问stdout,stderr,退出代码和运行另一个程序时等待子进程的线程 。
因此,使用pwd
命令,您可以执行以下操作:
require 'open3'
stdout, stderr, status = Open3.capture3('pwd')
puts stdout # ~/ current directory
puts stderr # no error
puts status # pid 25522 exit 0
ruby提供了一个很好的内置库来制作任何类型的http东西,例如下载文件,您可以使用net/http
:
require 'net/http'
require 'uri'
uri = URI(URI.encode("http://example.org/some/large/archive.zip"))
Net::HTTP.start(uri.host,uri.port) do |http|
request = Net::HTTP::Get.new uri.path
http.request request do |response|
open "/tmp/my_large_file.zip", 'w' do |io|
response.read_body do |chunk|
puts "Writing #{chunk.length} bits ..." # see progress
io.write chunk
end
end
end
end
使用wget
您将无法在ruby代码中捕获任何形式的http错误。*
使用wget
您将无法进行身份验证,例如在ruby代码中进行基本认证。*
使用Ruby内置库,它非常强大。
您可以但有一些错误代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.