使用out.write()将整数值写入文件

new*_*555 21 python

我正在生成一些数字(比方说,num)并将数字写入输出文件outf.write(num).
但是编译器抛出一个错误:

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

我怎么解决这个问题?

Lev*_*von 28

write()只接受一个字符串参数,所以你可以这样做:

outf.write(str(num))
Run Code Online (Sandbox Code Playgroud)

要么

outf.write('{}'.format(num))  # more "modern"
outf.write('%d' % num)        # deprecated mostly
Run Code Online (Sandbox Code Playgroud)

另请注意,write不会在输出中附加换行符,因此如果您需要它,则必须自己提供.

除了:

使用字符串格式化可以让您更好地控制输出,例如,您可以编写(这两者都是等效的):

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

num = 12
outf.write('%03d\n' % num)          
Run Code Online (Sandbox Code Playgroud)

得到三个空格,前导零为整数值,后跟换行符:

007
012
Run Code Online (Sandbox Code Playgroud)

format()将会存在很长一段时间,因此值得学习/了解.

  • @MechtEngineer简而言之,使用格式化功能比使用Python中的类似printf的格式格式化文本更受欢迎(因为我在Java,C等中也都使用了printf,所以我会同时使用两者,可能还会使用printf)。高温超导 (2认同)