Python初学者:将函数生成的文本输出到文件

时间:2012-08-01 18:13:04

标签: python python-2.7

Python新手在这里,运行2.7。

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

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

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

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

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

请让我知道我需要做些什么。

2 个答案:

答案 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 - 但你所写的都是无。请记住,“打印”只与终端通信,而不与文件或变量通信。

相关问题