Python-使用函数写入文本文件?

Python-使用函数写入文本文件?,python,file-io,function,Python,File Io,Function,我编写了一个简单的函数来写入文本文件。像这样, 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

我编写了一个简单的函数来写入文本文件。像这样,

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)?

很简单,您会:

write_func('Output is' + str(c))
您必须先将
c
转换为字符串,然后才能将其与另一个字符串连接起来。然后,您还可以取下:

var = str(var)
从你的功能


为什么我不能写一个整数 档案?我知道,int=str(int)之前 写入文件

您可以将二进制数据写入文件,但数字的字节表示形式并不是真正的人类可读的-例如,2是2的补码32位整数中的
0xfffffffe
。当数字为
浮点值时,情况更糟:2.1为
0x40066666


如果您计划拥有一个人类可读的文件,则需要在其上添加人类可读的字符。在ASCII文件中,“0.5”不是数字(至少不是计算机理解的数字),而是字符
“0”、“0.”和“5”
。这就是为什么您需要将数字转换为字符串。

您不能直接添加/连接字符串和整数

如果您要执行比字符串“+str(number)
”更复杂的操作,我强烈建议您使用:

file.write(str)

将字符串写入文件。没有返回值。由于缓冲, 字符串实际上可能不会显示在中 直到flush()或close()关闭 方法被调用

请注意文档如何指定
write
的参数必须是字符串


因此,在将字符串传递到
文件之前,您应该自己创建一个字符串。write()

Python是一种语言。这意味着,除其他外,不能将字符串和整数连接起来。因此,在连接之前,必须将整数转换为字符串。这可以通过使用格式字符串(如Nick T)或将整数传递给内置的
str
函数(如NullUserException)来实现。

我不同意人类可读性参数。实际上,
write
接受的
str
是一个字节字符串。它也可以是(短)int的4字节表示形式(您可以使用
struct
module获得)。@Constantin好的,您更喜欢
0x3F000000
还是0.5?我认为争论应该是这样的:为什么不能将整数写入文件?因为
write
需要一系列字节。如果你想要二进制数据,那么就给它二进制数据。如果您想要可读/ASCII/unicode(如OP所需),则为其提供可打印字节。文件包含您指定的内容:P@NullUserException,有时我更喜欢0x3F000000。尽管如此,Python中的
file.write
接受字节字符串,但不接受整数或其他任意对象,这一事实背后的设计决策给出了错误的理由。这和结果文件的可读性无关。呃,我不能正确理解措辞。请随意编辑我的答案。
write_func('Output is: %i' % (c))