Python open()

The syntax of open() is:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

open() Parameters

  • file - path-like object (representing a file system path)
  • mode (optional) - mode while opening a file. If not provided, it defaults to 'r' (open for reading in text mode). Available file modes are:
    Mode Description
    'r' Open a file for reading. (default)
    'w' Open a file for writing. Creates a new file if it does not exist or truncates the file if it exists.
    'x' Open a file for exclusive creation. If the file already exists, the operation fails.
    'a' Open for appending at the end of the file without truncating it. Creates a new file if it does not exist.
    't' Open in text mode. (default)
    'b' Open in binary mode.
    '+' Open a file for updating (reading and writing)
  • buffering (optional) - used for setting buffering policy
  • encoding (optional) - the encoding format
  • errors (optional) - string specifying how to handle encoding/decoding errors
  • newline​ (optional) - how newlines mode works (available values: None, ' ', '\n', 'r', and '\r\n'
  • closefd (optional) - must be True (default); if given otherwise, an exception will be raised
  • opener (optional) - a custom opener; must return an open file descriptor

Return Value from open()

The open() function returns a file object which can used to read, write and modify the file.

If the file is not found, it raises the FileNotFoundError exception.


Example 1: How to open a file in Python?

# opens test.text file of the current directory
f = open("test.txt")

# specifying the full path
f = open("C:/Python33/README.txt")

Since the mode is omitted, the file is opened in 'r' mode; opens for reading.


Example 2: Providing mode to open()

# opens the file in reading mode
f = open("path_to_file", mode='r')

# opens the file in writing mode 
f = open("path_to_file", mode = 'w')

# opens for writing to the end 
f = open("path_to_file", mode = 'a')

Python's default encoding is ASCII. You can easily change it by passing the encoding parameter.

f = open("path_to_file", mode = 'r', encoding='utf-8')

Recommended Reading: Python File Input/Output