ZetCode

Python tell Function

Last modified March 26, 2025

This comprehensive guide explores Python's tell function, which returns the current position of the file pointer. We'll cover its usage with different file modes, practical examples, and best practices for file position tracking in Python.

Basic Definition

The tell() method returns an integer representing the current position of the file pointer in the file. This position is measured in bytes from the beginning of the file. It's useful for tracking progress or returning to specific positions later.

When a file is opened, the position starts at 0 (beginning of file). Reading or writing operations move the pointer forward. The tell function works with both text and binary files, though behavior differs slightly.

Basic tell Usage

This example demonstrates the simplest use of tell to show the current file position before and after reading some data.

basic_tell.py
with open('example.txt', 'r') as file:
    print("Initial position:", file.tell())
    data = file.read(10)  # Read first 10 bytes
    print("After reading 10 bytes:", file.tell())
    print("Data read:", data)

The code opens a file and immediately checks the position (0). After reading 10 bytes, the position advances to 10. This shows how tell tracks the file pointer's movement during operations.

tell with Binary Files

Binary files provide precise position tracking since no character encoding conversion occurs. This example shows byte-accurate positioning.

binary_tell.py
with open('image.jpg', 'rb') as file:
    print("Start:", file.tell())
    file.read(100)  # Skip header
    print("After header:", file.tell())
    chunk = file.read(1024)
    print("After 1KB read:", file.tell())

This reads a binary file (JPEG image), showing positions after skipping a 100-byte header and reading a 1KB chunk. Binary mode ensures each byte read corresponds exactly to the position reported by tell.

tell with Text Files

Text files may show different behavior due to newline conversions and encoding. This example demonstrates position tracking in text mode.

text_tell.py
with open('textfile.txt', 'r') as file:
    print("Position before read:", file.tell())
    line = file.readline()
    print("First line:", line)
    print("Position after read:", file.tell())
    file.seek(0)
    print("Position after seek:", file.tell())

The code reads a line and shows positions before and after. Note that in text mode, tell may not correspond exactly to byte positions due to newline translations. The position is still valid for use with seek.

tell in Write Mode

When writing files, tell shows where the next write will occur. This example demonstrates position tracking during file writing.

write_tell.py
with open('output.txt', 'w') as file:
    print("Start position:", file.tell())
    file.write("First line\n")
    print("After first write:", file.tell())
    file.write("Second line\n")
    print("After second write:", file.tell())

Each write operation advances the file pointer, shown by tell. In write mode, the position always indicates where new data will be written. The \n characters count as one byte each in the position.

tell with seek Combination

This example shows how tell and seek work together for random file access.

seek_tell.py
with open('data.bin', 'rb+') as file:
    print("Initial position:", file.tell())
    file.seek(50)
    print("After seek to 50:", file.tell())
    file.write(b'X')
    print("After write:", file.tell())
    file.seek(0, 2)  # Seek to end
    print("File size:", file.tell())

The code demonstrates moving to position 50, writing a byte, then checking the file size by seeking to the end. The tell function verifies each operation's effect on the file position.

Best Practices

Source References

Author

My name is Jan Bodnar, and I am a passionate programmer with extensive programming experience. I have been writing programming articles since 2007. To date, I have authored over 1,400 articles and 8 e-books. I possess more than ten years of experience in teaching programming.

List all Python tutorials.