Запись целочисленных значений в файл с использованием out.write()

Я генерирую некоторые числа (скажем, num) и записывая числа в выходной файл с помощью outf.write(num).
Но компилятор выдает ошибку:

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

Как я могу решить эту проблему?

Ответ 1

write() принимает только один строковый аргумент, поэтому вы можете сделать это:

outf.write(str(num))

или

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

Также обратите внимание, что write не добавит новую строку к вашему выводу, поэтому, если вам это нужно, вам нужно будет предоставить его самостоятельно.

Помимо

Использование форматирования строк даст вам больше контроля над вашим выходом, поэтому, например, вы могли бы написать (оба они эквивалентны):

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

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

чтобы получить три пробела с начальными нулями для вашего целочисленного значения, за которым следует новая строка:

007
012

format() будет длиться долго, поэтому стоит изучить/знать.

Ответ 2

любой из них должен работать

outf.write("%s" % num)

outf.write(str(num))

print >> outf, num

Ответ 3

i = Your_int_value

Напишите значение байта, подобное этому, например:

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

Зависит от вашего значения размера int и порядка бит, предпочитаемого вами

Ответ 4

Также вы можете использовать форматирование F-строки, чтобы записать целое число в файл

Для добавления используйте следующий код, для написания один раз замените "a" на "w".

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

file.close()