2012-11-27 267 views
0
for x in range(6): 
    why = str(x+1) 
    outf.write(why) 

其中OUTF是文件爲什麼我不能輸出range()到文件的輸出?

給我:

why = str(x+1) 
TypeError: expected a character buffer object 
+0

看起來你正在死於調用'str()',而不是文件寫入。你能提供一個更大的,否則你的問題工作的例子? –

+2

您確定您顯示的代碼實際上是您正在運行的代碼嗎? –

+3

你以前是否把名字'str'綁定到別的東西上? – wim

回答

0

工作對我來說(在IPython中,蟒蛇2.7):

In [1]: outf = open('/tmp/t', 'w') 

In [2]: for x in range(6): 
    ...:  why = str(x+1) 
    ...:  outf.write(why) 

In [3]: outf.close() 

文件的內容:123456

你使用的是什麼python版本?

0

這對我的作品

outf = open('/temp/workfile', 'w') 
for x in range(6): 
    why = str(x+1) 
    outf.write(why) 
outf.flush() 
outf.close() 

/temp/workfile包含123456

1

我不相信你已經發布你正在運行的代碼,但也有避免明確調用寫它的其他方式的str和正在+1(假定每行一個數目是預期的和2.x):

for i in xrange(1, 7): # save the +1 
    print >> fout, i 

fout.writelines('{}\n'.format(i) for i in xrange(1, 7)) 

from itertools import islice, count 
fout.writelines('{}\n'.format(i) for i in islice(count(1), 6)) 
0

假設你是新到Python。 ..

new_File = open('mynewfile.txt', 'wr') 
for x in range(6): 
    new_File.write(str(x)+'\n') 

new_File.close() 

會給你輸出到一個名爲「mynewfile.txt」文件看起來像:

0 
1 
2 
3 
4 
5 

至於粘貼的代碼去,還有別的東西你arne't告訴我們...這工作得很好。

for x in range(6): 
    why = str(x+1) 
    print why 

1 
2 
3 
4 
5 
6 
+3

上下文管理器也是一個很好的習慣,早期構建:'用open('newfile.txt','w')作爲fout:'...... – mgilson

相關問題