Python新手在这里,运行2.7。
我正在尝试创建一个使用函数生成文本的程序,然后将函数生成的文本输出到文件中。
我在Python中打印函数没有问题
输出手动输入的文字没问题:(像这样)http://codepad.org/JrcUTZfC
但是当我尝试输出函数生成的文本时,它无效:http://codepad.org/Wyj5Li8Y
我通常会收到“字符缓冲区”错误。
请让我知道我需要做些什么。
答案 0 :(得分:4)
您可能希望从函数返回字符串而不是打印它们。像这样:
def fn(a,b,c):
return "Template string {0} {1} {2}".format(a,b,c)
对于迭代/连接部分,这应该做你需要的。请注意,需要显式添加换行符('\ n'),如果您使用print,则不会出现这种情况。
def iter_cat(a,b):
x = ""
while a < b:
x += 'This is string {0}, {1}\n'.format(a,b) # x gets previous x with "This.." appended
a += 1
return x
感谢。
答案 1 :(得分:1)
问题在于函数本身,而不是将输出写入文件。你没有使用“return”编写了你的函数。这在python中是合法的,但这意味着默认情况下该函数将返回None。
而不是说
print "votes%d_%d.append(v%d_%d_%d)" % (b,c,a,b,c,)
使用
data_to_write = "votes%d_%d.append(v%d_%d_%d)" % (b,c,a,b,c,)
data_to_write_two = # etc.
return data_to_write, data_to_write_two #etc. as needed
然后你可以像以前一样调用你的功能
x, x2 = myfunc()
out_file = open("code.txt", "w")
out_file.write(x)
#etc.
你正确使用.write - 但你所写的都是无。请记住,“打印”只与终端通信,而不与文件或变量通信。