Bird
Raised Fist0
Rubyprogramming~10 mins

File.readlines for line-by-line in Ruby - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to read all lines from a file named 'data.txt' into an array.

Ruby
lines = File.[1]('data.txt')
Drag options to blanks, or click blank then click option'
Agets
Bread
Copen
Dreadlines
Attempts:
3 left
💡 Hint
Common Mistakes
Using File.read returns the whole file as a single string, not an array of lines.
Using File.open returns a file object, not the lines directly.
2fill in blank
medium

Complete the code to print each line from the file 'notes.txt' using File.readlines.

Ruby
File.[1]('notes.txt').each do |line|
  puts line
end
Drag options to blanks, or click blank then click option'
Areadlines
Bforeach
Copen
Dread
Attempts:
3 left
💡 Hint
Common Mistakes
Using File.read returns a string, which does not have an each method for lines.
Using File.foreach reads lines one by one but is not called on File.readlines.
3fill in blank
hard

Fix the error in the code to correctly read lines from 'log.txt' and print them.

Ruby
lines = File.[1]('log.txt')
lines.each do |line|
  puts line
end
Drag options to blanks, or click blank then click option'
Aread
Breadlines
Copen
Dgets
Attempts:
3 left
💡 Hint
Common Mistakes
Using File.read returns a string, which cannot be iterated line by line with each.
Using File.open returns a file object, not an array of lines.
4fill in blank
hard

Fill both blanks to create a hash with line numbers as keys and lines as values from 'input.txt'.

Ruby
lines = File.[1]('input.txt')
line_hash = lines.each_with_index.to_h { |[2], i| [i + 1, [2]] }
Drag options to blanks, or click blank then click option'
Areadlines
Bline
Dread
Attempts:
3 left
💡 Hint
Common Mistakes
Using File.read instead of File.readlines returns a string, which does not work with each_with_index as expected.
Using a wrong variable name in the block causes errors.
5fill in blank
hard

Fill all three blanks to create a hash with uppercase line keys and their lengths as values from 'file.txt'.

Ruby
lines = File.[1]('file.txt')
result = lines.to_h { |[2]| [[2].upcase, [3] ] }
Drag options to blanks, or click blank then click option'
Aread
Breadlines
Cline.length
Dline
Attempts:
3 left
💡 Hint
Common Mistakes
Using File.read returns a string, which cannot be iterated like an array.
Mixing variable names or forgetting to call upcase causes errors.

Practice

(1/5)
1. What does File.readlines('example.txt') return in Ruby?
easy
A. A hash with line numbers as keys and lines as values
B. A string containing the entire file content
C. An array where each element is a line from the file, including newline characters
D. An integer representing the number of lines in the file

Solution

  1. Step 1: Understand File.readlines behavior

    File.readlines reads the whole file and returns an array of lines.
  2. Step 2: Check line content format

    Each line includes the newline character at the end unless removed by chomp.
  3. Final Answer:

    An array where each element is a line from the file, including newline characters -> Option C
  4. Quick Check:

    File.readlines returns array of lines [OK]
Hint: Remember: File.readlines returns an array of lines with newlines [OK]
Common Mistakes:
  • Thinking it returns a single string
  • Assuming it returns a hash or dictionary
  • Believing it returns just the line count
2. Which of the following is the correct syntax to read all lines from a file named data.txt into an array in Ruby?
easy
A. File.read_lines[]('data.txt')
B. File.read('data.txt')
C. File.read_lines('data.txt')
D. File.readlines('data.txt')

Solution

  1. Step 1: Recall correct method name

    The correct Ruby method to read lines is File.readlines (no underscore or plural misspelling).
  2. Step 2: Check method call syntax

    The method is called with parentheses and the filename as a string argument.
  3. Final Answer:

    File.readlines('data.txt') -> Option D
  4. Quick Check:

    Correct method name and syntax = File.readlines('data.txt') [OK]
Hint: Use exact method name: File.readlines('filename') [OK]
Common Mistakes:
  • Using underscores instead of camel case
  • Misspelling the method name
  • Omitting parentheses or using wrong brackets
3. Given a file notes.txt with these lines:
Line 1
Line 2
Line 3

What will the following Ruby code output?
lines = File.readlines('notes.txt')
puts lines[1]
medium
A. Line 2
B. Line 1
C. Line 3
D. nil

Solution

  1. Step 1: Understand File.readlines output

    The file lines are read into an array: ["Line 1\n", "Line 2\n", "Line 3\n"].
  2. Step 2: Access the second element

    Array indexing starts at 0, so lines[1] is "Line 2\n".
  3. Final Answer:

    Line 2 -> Option A
  4. Quick Check:

    Index 1 = second line = Line 2 [OK]
Hint: Remember arrays start at 0; lines[1] is second line [OK]
Common Mistakes:
  • Assuming indexing starts at 1
  • Forgetting newline characters affect output
  • Expecting nil for valid index
4. What is wrong with this Ruby code snippet?
lines = File.readlines('file.txt')
lines.each do |line|
  puts line.chomp
end

Assuming file.txt exists and is readable.
medium
A. It will skip the first line of the file
B. Nothing is wrong; it correctly prints each line without newlines
C. It will print lines with extra newlines
D. It will raise an error because chomp is not a method

Solution

  1. Step 1: Analyze File.readlines usage

    File.readlines reads all lines into an array, each ending with a newline.
  2. Step 2: Check iteration and chomp usage

    Using each to iterate and chomp removes trailing newline before printing.
  3. Final Answer:

    Nothing is wrong; it correctly prints each line without newlines -> Option B
  4. Quick Check:

    chomp removes newline, so output is clean [OK]
Hint: Use chomp to remove newlines when printing lines [OK]
Common Mistakes:
  • Thinking chomp is invalid method
  • Expecting extra newlines despite chomp
  • Assuming lines are skipped
5. You want to read a file data.txt and create a new array containing only lines that include the word "error" (case insensitive). Which Ruby code correctly does this using File.readlines?
hard
A. File.readlines('data.txt').select { |line| line.downcase.include?('error') }
B. File.readlines('data.txt').map { |line| line.include?('error') }
C. File.readlines('data.txt').filter { |line| line.include?('Error') }
D. File.readlines('data.txt').reject { |line| line.downcase.include?('error') }

Solution

  1. Step 1: Use File.readlines to get all lines

    This returns an array of lines from the file.
  2. Step 2: Filter lines case-insensitively

    Use select to keep lines where line.downcase.include?('error') is true.
  3. Step 3: Check other options

    File.readlines('data.txt').map { |line| line.include?('error') } uses map which returns booleans, not lines. File.readlines('data.txt').filter { |line| line.include?('Error') } checks case-sensitive 'Error'. File.readlines('data.txt').reject { |line| line.downcase.include?('error') } rejects lines with 'error', opposite of requirement.
  4. Final Answer:

    File.readlines('data.txt').select { |line| line.downcase.include?('error') } -> Option A
  5. Quick Check:

    select + downcase + include? = correct filter [OK]
Hint: Use select with downcase and include? for case-insensitive filtering [OK]
Common Mistakes:
  • Using map instead of select
  • Ignoring case sensitivity
  • Using reject instead of select
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard