with open(r'G:\Programs\abc.txt') as f:
for line in f:
if line.startswith('logan'):
f.write('Johann Sebastian Bach')
print("Renewed line = ", line)
error message:
runfile('G:/Python Programs/p17.py', wdir='G:/Python Programs')
Traceback (most recent call last):
File "<ipython-input-2-393638b0e5ce>", line 1, in <module>
runfile('G:/Python Programs/p17.py', wdir='G:/Python Programs')
File "G:\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 880, in runfile
execfile(filename, namespace)
File "G:\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "G:/Python Programs/p17.py", line 11, in <module>
khand.write('Johann Sebastian Bach')
UnsupportedOperation: not writable
I have listed this code in python3.6 still I am getting an error message. I have required file in directory. Any suggestions?
Opening the file without a mode defaults to opening it in readonly mode. If you want to write to it while reading, you've to specify the mode as r+
.
with open(r'G:\Programs\abc.txt', mode='r+') as khand:
...
w+
will also open the file in r/w mode, however, it wipes the contents clean.
You also use the a+
mode which will append to the end of the file, while still letting you read from it.