Python Forum

Full Version: Appending To Files Challenge
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
# I Write a program to append the times table for our poem in sample.txt .
So , this is all of my code

numbers = 1
for i in range(2, 12):
    while 13 >= numbers > 0:
        multiply = numbers * i
        print('| {0} Times {1} is {2} '.format(numbers, i, multiply))
        numbers += 1
print('=' * 21)

with open('times_table.txt', 'w') as times:
    for table in times:
        print(table, file=times)
And the output is :

Output:
| 1 Times 2 is 2 | 2 Times 2 is 4 | 3 Times 2 is 6 | 4 Times 2 is 8 | 5 Times 2 is 10 | 6 Times 2 is 12 | 7 Times 2 is 14 | 8 Times 2 is 16 | 9 Times 2 is 18 | 10 Times 2 is 20 | 11 Times 2 is 22 | 12 Times 2 is 24 | 13 Times 2 is 26 ========================================
But because of code at the end lines for files appending , I'm facing this error below :
Error:
Traceback (most recent call last): File "C:/Users/debug system/IdeaProjects/LearnPY/02/I_O - Challenge.py", line 11, in <module> for table in times: io.UnsupportedOperation: not readable
So , finally I don't know how to append this time table stuffs into a sample.txt file .
I really appreciate you all guys . If you can possibly help me with this .
Thanks .
You want to have the file open while you are generating the lines of the multiplication table, and you want to write them to the file (times.write()) instead of printing them.

If you want to append to a file instead of writing over it, you use mode 'a' when you open the file instead of mode 'w'.
Try using W+

Use W+ , here is the result

numbers = 1
for i in range(2, 12):
    while 13 >= numbers > 0:
        multiply = numbers * i
        print('| {0} Times {1} is {2} '.format(numbers, i, multiply))
        numbers += 1
print('=' * 21)

with open('times_table.txt', 'w+') as times:
    for table in times:
        print(table, file=times)
Output:
home/aankrose/code/phase2/venv/bin/python /home/aankrose/code/phase2.py | 1 Times 2 is 2 | 2 Times 2 is 4 | 3 Times 2 is 6 | 4 Times 2 is 8 | 5 Times 2 is 10 | 6 Times 2 is 12 | 7 Times 2 is 14 | 8 Times 2 is 16 | 9 Times 2 is 18 | 10 Times 2 is 20 | 11 Times 2 is 22 | 12 Times 2 is 24 | 13 Times 2 is 26 ===================== Process finished with exit code 0
If you need to work with files then it might be useful to get aqcuainted with documentation about open() (which is quite extensive).