Copy a file line by line in python

Viewed 35880

I am writing a python program to copy a file line by line into a new file. The code I have is below in which I am using a loop to copy the file line by line.

However since the number of lines in the file may change, is there a way to copy a file line by line in python without using a loop which relies on numbers, and instead relies on the something like the EOF character to terminate the loop?

import os
import sys

i = 0
f = open("C:\\Users\\jgr208\\Desktop\\research_12\\sap\\beam_springs.$2k","r")
copy = open("C:\\Users\\jgr208\\Desktop\\research_12\\sap\\copy.$2k","wt")
#loop that copies file line by line and terminates loop when i reaches 10
while i < 10:
     line = f.readline()
     copy.write(str(line))
     i = i +1
f.close()
copy.close()
5 Answers

Writing line by line can be slow when working with large data. You can accelerate the read/write operations by reading/writing a bunch of lines all at once. Please refer to my answer to a similar question here

Using with statements:

with open("input.txt", "r", encoding="utf-8") as input_file:
  with open("output.txt", "w", encoding="utf-8") as output_file:
    for input_line in input_file:
      output_line = f(input_line) # You can change the line here
      output_file.write(output_line)

Note that input_line contains the end-of-line character(s) (\n or \r\n), if there are any.

Related