Question

I am learning python file handling. I tried this code to read one character at a time

f = open('test.dat', 'r')

while (ch=f.read(1)):
    print ch

Why it's not working

Here is Error message

C:\Python27\python.exe "C:/Users/X/PycharmProjects/Learning Python/01.py"
File "C:/Users/X/PycharmProjects/Learning Python/01.py", line 4
while (ch=f.read(1)):
         ^
SyntaxError: invalid syntax

Process finished with exit code 1
Était-ce utile?

La solution

Your syntax is a bit off, your assignment inside the while statement is invalid syntax:

f = open('test.dat', 'r')
while True:
    ch=f.read(1)
    if not ch: break
    print ch

This will start the while loop, and break it when there are no characters left to read! Give it a try.

Autres conseils

You can use the two form version of iter as an alternative to a while loop:

for ch in iter(lambda: f.read(1), ''):
    print ch

for python 3.8+ you can just do:

f = open('test.dat', 'r')

while ch := f.read(1):
    print(ch)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top