80

I already created a txt file using python with a few lines of text that will be read by a simple program. However, I am having some trouble reopening the file and writing additional lines in the file in a later part of the program. (The lines will be written from user input obtained later on.)

with open('file.txt', 'w') as file:
    file.write('input')

This is assuming that 'file.txt' has been opened before and written in. In opening this a second time however, with the code that I currently have, I have to erase everything that was written before and rewrite the new line. Is there a way to prevent this from happening (and possibly cut down on the excessive code of opening the file again)?

1
  • 13
    Do not use "file" as variable name because it's shadowing the built-in file type Commented Feb 21, 2013 at 15:05

4 Answers 4

85

Open the file for 'append' rather than 'write'.

with open('file.txt', 'a') as file:
    file.write('input')
Sign up to request clarification or add additional context in comments.

1 Comment

Note! This will not add a newline. If you need to add a line to a text file (as opposed to a line fragment), end the data with \n, e.g.: file.write('input\n')
79

If you want to append to the file, open it with 'a'. If you want to seek through the file to find the place where you should insert the line, use 'r+'. (docs)

Comments

22

Use 'a', 'a' means append. Anything written to a file opened with 'a' attribute is written at the end of the file.

with open('file.txt', 'a') as file:
    file.write('input')

Comments

1

If having a pathlib.Path object (instead of a str object), consider using its open method.

with my_path.open(mode='a') as file:
    file.write(f'{my_line}\n')

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.