26

I have a simple script that does some search and replace. This is basically it:

File.open("us_cities.yml", "r+") do |file|
  while line = file.gets
  "do find a replace"
  end
  "Here I want to write to a new file"
end

As you can see I want to write a new file with the output. How can I do this?

2 Answers 2

39

Outputting to a new file can be done like this (don't forget the second parameter):

output = File.open( "outputfile.yml","w" )
output << "This is going to the output file"
output.close

So in your example, you could do this :

File.open("us_cities.yml", "r+") do |file|
  while line = file.gets
    "do find a replace"
  end
  output = File.open( "outputfile.yml", "w" )
  output << "Here I am writing to a new file"
  output.close      
end

If you want to append to the file, make sure you put the opening of the output file outside of the loop.

Sign up to request clarification or add additional context in comments.

Comments

6

First you have to create a new file such as newfile.txt

Then change the script to

File.open("us_cities.yml", "r+") do |file|
  new_file = File.new("newfile.txt", "r+")
  while line = file.gets
  new_file.puts "do find a replace"
  end
end

This will make a new file with the output

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.