Back to Python
2026-03-315 min read

Python Write/Create Files

Learn Python Write/Create Files step by step with clear examples and exercises.

Title: Python File Write/Create Tutorial

Why This Matters

Python file writing is an essential skill for developers, enabling you to save data, create scripts, and automate tasks. In this tutorial, we'll delve into the practical aspects of working with files in Python, focusing on common use cases, best practices, and pitfalls to avoid. This knowledge will be valuable for interviews, real-world projects, and debugging common issues that arise when dealing with file I/O.

Prerequisites

To follow this tutorial, you should have a basic understanding of Python syntax and data structures (lists, dictionaries, strings). Familiarity with the concept of functions will also be helpful. If you need a refresher on these topics, check out our Python Basics tutorial.

Core Concept

In Python, you can write to and read from files using built-in functions like open(), write(), read(), and others. Here's a step-by-step guide on how to create, write to, and read from a file:

  1. Open the file in write mode (w) or append mode (a) using the open() function. Write mode will overwrite the existing file if it exists; append mode will add content to the end of an existing file.
file = open('my_file.txt', 'w') # Open a new file in write mode
  1. Write data to the file using the write() function. This can be a string, list, or any other iterable object that can be converted to a string.
file.write('Hello, World!\n') # Write a simple message to the file
file.write(['Line 2\n', 'Line 3\n']) # Write multiple lines at once
  1. Close the file using the close() method or the with statement to ensure that all data is written and resources are properly released.
file.close() # Close the file manually

Using a 'with' block for automatic closing

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

file.write('Hello, World!\n')


4. To read from a file, open it in read mode (`r`) and use the `read()` function to read the entire contents of the file into a string. You can also iterate over the file object line by line using a for loop.

with open('my_file.txt', 'r') as file:

content = file.read() # Read all contents as a single string

with open('my_file.txt', 'r') as file:

for line in file:

print(line, end='') # Print each line individually

Worked Example

Let's create a simple Python script that reads user input and writes it to a file.

  1. Open a new file called write_to_file.py in your favorite text editor or IDE.
  1. Add the following code:
def write_to_file(filename, data):
with open(filename, 'w') as file:
for line in data:
file.write(line + '\n')

def read_from_file(filename):
with open(filename, 'r') as file:
lines = file.readlines()
return [line.strip() for line in lines]

Prompt the user for input and write it to a file called 'user_input.txt'

data = []

while True:

user_input = input('Enter your message (type "quit" to exit): ')

if user_input == 'quit':

break

data.append(user_input)

write_to_file('user_input.txt', data)

Read the contents of 'user_input.txt' and print them

print('\nContents of user_input.txt:')

print(read_from_file('user_input.txt'))


3. Save and run the script, entering multiple lines of input when prompted. Afterward, you can read the contents of the file by running the `read_from_file()` function.

Common Mistakes

  1. Forgetting to close the file: Always make sure to close files using the close() method or a 'with' block to prevent resource leaks and ensure that all data is written properly.
  1. Not specifying the mode when opening the file: If you don't specify the mode (e.g., 'w', 'r', 'a'), Python will use the default read mode, which may not be what you intended.
  1. Writing to a non-existent file: Before writing to a file, make sure it doesn't already exist or create it manually if needed. Overwriting an existing file without intending to can lead to data loss.
  1. Not handling exceptions: When working with files, it's essential to handle potential errors such as file not found, permission denied, and others using try-except blocks.

Practice Questions

  1. Write a Python script that reads the contents of a file called 'data.txt', processes the data (e.g., converts all words to uppercase), and writes the processed data back to the same file.
  1. Create a Python function called count_lines() that takes a filename as an argument, reads the file line by line, and returns the total number of lines in the file.
  1. Write a Python script that accepts user input for filenames and reads the contents of each file, concatenating them into one string and writing the result to a new file called 'combined.txt'.

FAQ

--

  1. Why should I close files manually or use a 'with' block? Closing files ensures that all data is written and resources are properly released. Failing to do so can lead to resource leaks, which may cause your program to consume excessive memory or even crash.
  1. What happens if I try to write to a file in read-only mode? If you attempt to write to a file in read-only mode, Python will raise an IOError with the message "Permission error: [Errno 13] Permission denied". To avoid this issue, open the file in write or append mode.
  1. How can I read and write binary files in Python? To work with binary files in Python, you should use the open() function with a 'b' suffix (e.g., 'wb', 'rb') to specify the binary mode. The built-in functions for reading and writing remain the same, but you may need to handle byte strings instead of regular strings.
Python Write/Create Files | Python | XQA Learn