Problem Formulation and Solution Overview
Let’s say, for this article, you have been asked to write Python code that reads a file and displays one (1) character from that file per iteration until all contents have been read in.
Method 1: Use open(), read(), iter() and a lambda
This method uses open()
, read()
, iter()
and a lambda
to read a flat-text file and display the contents one character at a time.
from time import sleep with open('secret_word.txt1', 'r') as fp: for letter in iter(lambda: fp.read(1), ''): print(letter) sleep(2)
The first line in the above code imports the sleep()
function from the time
library. This function delays code execution until a specified time has elapsed (sleep(2)
).
The following line opens the flat-text file, secret_word1.txt
, in read (r
) mode and saves it as a File Object, fp
. This allows us access to and manipulation of said file. If output to the terminal, a File Object similar to below would display.
<_io.TextIOWrapper name='spelling.txt' mode='r' encoding='cp1252'> |
Next, a for
loop is instantiated. This code iterates through each character in the file by calling the iter()
function and passing it one (1) argument, the anonymous function, a lambda
. The lambda function uses read()
to read one character at a time.
The results of each iteration are output to the terminal. Then, sleep()
is called and passed an argument, the number of seconds to delay execution.
The iteration continues until all characters in the file have been output to the terminal, thus revealing the secret word!
W |
Method 2: Use open(), read() and a while loop
This method uses open()
, read()
, and a while
loop to read a flat-text file and display the contents one character at a time.
from time import sleep with open('secret_word2.txt', 'r') as fp: while True: letter = fp.read(1) if not letter: break print(letter)
The first line in the above code imports the sleep
() function from the time
library. This function delays code execution until a specified time has elapsed (sleep(2)
).
The following line opens the flat-text file, secret_word2.txt
, in read (r
) mode and saves it as a File Object, fp
. This allows us access to and manipulation of said file. If output to the terminal, a File Object similar to below would display.
<_io.TextIOWrapper name='spelling.txt' mode='r' encoding='cp1252'> |
Next, a while
loop is instantiated and executes until a statement inside the loop becomes False (for example, no characters left to read).
Then read()
is called and retrieves one (1) character from the file. The results save to the variable letter
.
The following line determines if letter
, does in fact, contain a character. If True, letter
is output to the terminal. If False, the loop terminates.
The iteration continues until all characters in the file have been output to the terminal, thus revealing the secret word!
b |
Method 3: Use open(), readline() and a for loop
This method uses open()
, readline()
and a for
loop to read a flat-text file and display the contents one character at a time.
with open('secret_word3.txt', 'r') as fp: word = fp.readline() for letter in word: print(letter, end='')
The first line in the above code opens the flat-text file, secret_word3.txt
, in read (r
) mode and saves it as a File Object, fp
.
Next, the text file’s first line is read into the variable word
.
Finally, a for
loop is instantiated to iterate through each character in word
, outputting one character per iteration to the terminal on the same line, thus revealing the secret word!
in |
Method 4: Use open(), read() and the walrus operator
This method uses open()
and read()
and the walrus
operator to read a flat-text file and display the contents one character at a time.

In Python 3.8, a new syntax was defined: the :=
operator, affectionately known as the walrus operator. A sleek new operator!
fp = open('secret_word4.txt', 'r') while ch := fp.read(1): print(ch, end='') fp.close()
The first line in the above code opens the flat-text file, secret_word4.txt
, in read (r
) mode and saves it as a File Object, fp
.
The following line instantiates a while
loop and, using the walrus operator (:=
) reads in and outputs one character per iteration to the terminal on the same line, thus revealing the secret word.
wonder. |
The file closes and the script ends.
Method 5: Use write() and flush()
This method uses write()
and flush()
to read a flat-text file and display the contents one character at a time.
import time import sys def get_secret_word(word): for c in word: sys.stdout.write(c) sys.stdout.flush() time.sleep(0.25) get_secret_word('~ Socrates')
The first two (2) lines in the above code import the time
and the sys
libraries. The time
library is used to call the sleep()
function, which delays execution. Whereas the sys
library, is used to call functions that output the contents and flush the same to the terminal.
The following line declares a function, get_secret_word()
. This function is passed one (1) argument, a string.
Inside this function, a for
loop is instantiated and iterates through each character in the string passed (word
) and does the following:
- Reads in one (1) character and outputs it to the terminal.
- Flushes the character from the buffer.
- Pauses code execution for the specified time (
time.sleep(0.25)
).
This iteration continues until the end of the file is reached, thus revealing the secret word!
~ Socrates |
Summary
This article has provided five (5) ways to read one character at a time from a file to select the best fit for your coding requirements.
Good Luck & Happy Coding!
Programming Humor – Python
