Python - Запись в текстовый файл с использованием функций? - PullRequest
0 голосов
/ 17 августа 2010

я написал простую функцию для записи в текстовый файл.вот так

def write_func(var):
        var = str(var)
        myfile.write(var)
a= 5
b= 5
c= a + b
write_func(c)

запишет вывод в нужный файл.Теперь я хочу вывод в другом формате.скажем,

write_func("Output is :"+c)

, чтобы вывод имел осмысленное имя в файле.как мне это сделать?и почему я не могу записать целое число в файл?я делаю, int = str (int) перед записью в файл?

Ответы [ 4 ]

3 голосов
/ 17 августа 2010

Вы не можете добавлять / объединять строку и целое число напрямую.

Если вы делаете что-то более сложное, чем "string :"+str(number), я настоятельно рекомендую использовать форматирование строки :

write_func('Output is: %i' % (c))
2 голосов
/ 17 августа 2010

Python является строго типизированным языком. Это означает, среди прочего, что вы не можете объединить строку и целое число. Поэтому вам придется преобразовать целое число в строку перед объединением. Это можно сделать, используя строку формата (как предложил Ник * ) или передав целое число во встроенную функцию str (как предложено NullUserException ).

2 голосов
/ 17 августа 2010

Просто, вы делаете:

write_func('Output is' + str(c))

Вы должны преобразовать c в строку, прежде чем сможете объединить ее с другой строкой. Тогда вы также можете снять:

var = str(var)

Из вашей функции.


почему я не могу написать целое число файл? я делаю, int = str (int) раньше запись в файл?

Вы можете записывать двоичные данные в файл, но представления чисел в байтах на самом деле не читаются человеком. -2, например, это 0xfffffffe в 32-разрядном целом числе с дополнением 2. Еще хуже, когда число равно float: 2,1 равно 0x40066666.

Если вы планируете создать файл, читаемый человеком, на нем должны быть символы, читаемые человеком. В ASCII-файле «0.5» - это не число (по крайней мере, если компьютер не понимает числа), а символы '0', '.' and '5'. И именно поэтому вам нужно конвертировать ваши числа в строки.

1 голос
/ 17 августа 2010

С http://docs.python.org/library/stdtypes.html#file.write

file.write (ул)

Записать строку в файл. Нет возвращаемого значения. Из-за буферизации, строка может не отображаться в файл до сброса () или закрытия () метод называется.

Обратите внимание, как в документации указано, что аргумент write должен быть строкой.

Таким образом, вы должны создать строку самостоятельно, прежде чем передать ее file.write().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...