2015-08-11 4 views
4

Я пытаюсь поместить имя файла из строки, но не могу.Используйте строку в filename

Это хорошо работает:

#!/usr/bin/ruby 
require 'httpclient' 

http2 = HTTPClient.new 
response = http2.get_content("http://example.com/version.ini") 

response.each_line do | line | 

    http = HTTPClient.new 
    my_file = open('file.zip', 'wb') 
    my_file.write(http.get_content("http://example.com/data.zip")) 

end 

puts "Done." 

Но это не так:

#!/usr/bin/ruby 
require 'httpclient' 

http2 = HTTPClient.new 
response = http2.get_content("http://example.com/version.ini") 

response.each_line do | line | 
    puts line # -> file.zip 
    http = HTTPClient.new 
    my_file = open(line, 'wb') 
    my_file.write(http.get_content("http://example.com/data.zip")) 

end 

puts "Done." 

консоли:

C: /Ruby22-x64/lib/ruby/2.2.0/open -uri.rb: 36: in initialize': Invalid argument @ rb_sysopen - file.zip (Errno::EINVAL) from C:/Ruby22-x64/lib/ruby/2.2.0/open-uri.rb:36:in open ' от C: /Ruby22-x64/lib/ruby/2.2.0/open-uri.rb: 36: in open' from launcher.rb:10:in блок в' от launcher.rb: 7: in each_line' from launcher.rb:7:in '

+2

Try 'my_file = открытый (line.to_s, 'термометра')' –

+0

Что значение 'ставит line.inspect'? –

+0

@axelTetzlaff Не работает. –

ответ

1

Проблема с символом новой линии, попробуйте снять ее.

my_file = open(line.chomp, 'wb') 
Смежные вопросы