我正在生成一些数字(比方说,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()将会存在很长一段时间,因此值得学习/了解.
| 归档时间: |
|
| 查看次数: |
108099 次 |
| 最近记录: |