不能在 ruby if 块中 'file.open.read' url
Can't 'file.open.read' a url within a ruby if-block
我想创建一个 ruby 脚本,它将从文本文件中获取条形码,搜索该条形码的网络服务并下载结果。
首先我尝试测试网络服务下载。在我对查询进行硬编码时的文件中,一切正常:
result_download = open('http://webservice.org/api/?query=barcode:78686112327', 'User-Agent' => 'UserAgent email@gmail.com').read
一切正常。
当我尝试从文本文件中获取条形码和 运行 查询时,我 运行 遇到了问题。
IO.foreach(filename) {|barcode| barcode
website = "'http://webservice.org/api/?query=barcode:"+barcode.to_str.chomp + "', 'User-Agent' => 'UserAgent email@gmail.com'"
website = website.to_s
mb_metadata = open(website).read
}
结果是:
/home/user/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/open-uri.rb:37:in `initialize': No such file or directory @ rb_sysopen - http://webservice.org/api/?query=barcode:78686112327', 'User-Agent' => 'UserAgent email@gmail.com' (Errno::ENOENT)
我不知道是否会出现此问题,因为我以某种方式生成的字符串不是有效的 url 并且 ruby 正在尝试打开一个不存在的文件,或者是我在 for 循环中执行所有这些操作并且 file/url 不存在的问题。我曾尝试使用 open(website).write 而不是 open(website).read 但会产生相同的错误。
如有任何帮助,我们将不胜感激。
您收到的错误消息明确指出,没有这样的文件:
http://webservice.org/api/?query=barcode:78686112327', 'User-Agent' => 'UserAgent email@gmail.com'
。
您尝试使用 1 个大字符串 (website
) 将所有参数传递给 open
方法,这是错误的。你应该那样做。
IO.foreach(filename) do |barcode|
website = "http://webservice.org/api/?query=barcode:#{barcode.to_str.chomp}"
mb_metadata = open(website, 'User-Agent' => 'UserAgent email@gmail.com').read
end
我想创建一个 ruby 脚本,它将从文本文件中获取条形码,搜索该条形码的网络服务并下载结果。
首先我尝试测试网络服务下载。在我对查询进行硬编码时的文件中,一切正常:
result_download = open('http://webservice.org/api/?query=barcode:78686112327', 'User-Agent' => 'UserAgent email@gmail.com').read
一切正常。
当我尝试从文本文件中获取条形码和 运行 查询时,我 运行 遇到了问题。
IO.foreach(filename) {|barcode| barcode
website = "'http://webservice.org/api/?query=barcode:"+barcode.to_str.chomp + "', 'User-Agent' => 'UserAgent email@gmail.com'"
website = website.to_s
mb_metadata = open(website).read
}
结果是:
/home/user/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/open-uri.rb:37:in `initialize': No such file or directory @ rb_sysopen - http://webservice.org/api/?query=barcode:78686112327', 'User-Agent' => 'UserAgent email@gmail.com' (Errno::ENOENT)
我不知道是否会出现此问题,因为我以某种方式生成的字符串不是有效的 url 并且 ruby 正在尝试打开一个不存在的文件,或者是我在 for 循环中执行所有这些操作并且 file/url 不存在的问题。我曾尝试使用 open(website).write 而不是 open(website).read 但会产生相同的错误。
如有任何帮助,我们将不胜感激。
您收到的错误消息明确指出,没有这样的文件:
http://webservice.org/api/?query=barcode:78686112327', 'User-Agent' => 'UserAgent email@gmail.com'
。
您尝试使用 1 个大字符串 (website
) 将所有参数传递给 open
方法,这是错误的。你应该那样做。
IO.foreach(filename) do |barcode|
website = "http://webservice.org/api/?query=barcode:#{barcode.to_str.chomp}"
mb_metadata = open(website, 'User-Agent' => 'UserAgent email@gmail.com').read
end