Answer a question

I am generating some numbers (let's say, num) and writing the numbers to an output file using outf.write(num).

But the interpreter is throwing an error:

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

How can I solve this problem?

Answers

write() only takes a single string argument, so you could do this:

outf.write(str(num))

or

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

Also note that write will not append a newline to your output so if you need it you'll have to supply it yourself.

Aside:

Using string formatting would give you more control over your output, so for instance you could write (both of these are equivalent):

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

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

to get three spaces, with leading zeros for your integer value followed by a newline:

007
012

format() will be around for a long while, so it's worth learning/knowing.

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐