I am generating some numbers (let’s say, num) and writing the numbers to an output file using outf.write(num).

But the interpreter is throwing an error:

    outf.write(num)  
TypeError: argument 1 must be string or read-only character buffer, not int.  

How can I solve this problem?

write() only takes a single string argument, so you could do this:

outf.write(str(num))

or

outf.write('{}'.format(num))  # more "modern"
outf.write('%d' % num)        # deprecated mostly

Also note that write will not append a newline to your output so if you need it you’ll have to supply it yourself.

Aside:

Using string formatting would give you more control over your output, so for instance you could write (both of these are equivalent):

num = 7
outf.write('{:03d}\n'.format(num))

num = 12
outf.write('%03d\n' % num)          

to get three spaces, with leading zeros for your integer value followed by a newline:

007
012

format() will be around for a long while, so it’s worth learning/knowing.

any of these should work

outf.write("%s" % num)

outf.write(str(num))

print >> outf, num

i = Your_int_value

Write bytes value like this for example:

the_file.write(i.to_bytes(2,"little"))

Depend of you int value size and the bit order your prefer

Also you can use f-string formatting to write integer to file

For appending use following code, for writing once replace ‘a’ with ‘w’.

for i in s_list:
    with open('path_to_file','a') as file:
        file.write(f'{i}\n')

file.close()

f = open ('file1.txt','a') ##you can also write here 'w' for create or writing into file
while True :
    no = int(input("enter a number (0 for exit)"))
    if no == 0 :
        print("you entered zero(0) ....... \nnow you are exit  !!!!!!!!!!!")
        break
    else :
        f.write(str(no)+"\n")

f.close()
   
f1 = open ('Ass1.txt','r')

print("\n content of file :: \n",f1.read())

f1.close()