26

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

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

我怎么解决这个问题?

4

5 回答 5

35

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

outf.write(str(num))

或者

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

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

旁白

使用字符串格式可以让你更好地控制你的输出,所以例如你可以写(这两个是等价的):

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

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

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

007
012

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

于 2012-06-22T17:10:41.220 回答
3

这些中的任何一个都应该有效

outf.write("%s" % num)

outf.write(str(num))

print >> outf, num
于 2012-06-22T17:12:34.957 回答
2
i = Your_int_value

像这样写字节值,例如:

the_file.write(i.to_bytes(2,"little"))

取决于您的 int 值大小和您喜欢的位顺序

于 2018-01-26T13:33:42.127 回答
1

您也可以使用 f-string 格式将整数写入文件

对于附加使用以下代码,用于编写一次将 'a' 替换为 'w'。

for i in s_list:
    with open('path_to_file','a') as file:
        file.write(f'{i}\n')

file.close()
于 2019-08-19T21:37:22.787 回答
1
f = open ('file1.txt','a') ##you can also write here 'w' for create or writing into file
while True :
    no = int(input("enter a number (0 for exit)"))
    if no == 0 :
        print("you entered zero(0) ....... \nnow you are exit  !!!!!!!!!!!")
        break
    else :
        f.write(str(no)+"\n")

f.close()
   
f1 = open ('Ass1.txt','r')

print("\n content of file :: \n",f1.read())

f1.close()
   
于 2021-04-21T08:07:29.127 回答