1

Python新手在这里,运行2.7。

我正在尝试创建一个使用函数生成文本的程序,然后将函数生成的文本输出到文件中。

我在 Python 中打印函数没有问题

我输出手动输入的文本没有问题:(像这样)http://codepad.org/JrcUTZfC

但是当我尝试输出函数生成的文本时,它不起作用:http ://codepad.org/Wyj5Li8Y

我通常会收到“字符缓冲区”错误。

请让我知道我需要做些什么不同的事情。

4

2 回答 2

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

谢谢。

于 2012-08-01T18:37:29.973 回答
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 - 但您所写的只是无。请记住,“打印”仅与终端对话,而不与文件或变量对话。

于 2012-08-01T18:52:03.740 回答