Python初学者:将函数生成的文本输出到文件
Python新手,正在运行2.7 我正在尝试创建一个程序,该程序使用函数生成文本,然后将函数生成的文本输出到文件中 我可以用Python打印函数 我在输出手动输入的文本时没有问题:像这样 但当我尝试输出函数生成的文本时,它不起作用: 我通常会得到一个字符缓冲区错误Python初学者:将函数生成的文本输出到文件,python,python-2.7,Python,Python 2.7,Python新手,正在运行2.7 我正在尝试创建一个程序,该程序使用函数生成文本,然后将函数生成的文本输出到文件中 我可以用Python打印函数 我在输出手动输入的文本时没有问题:像这样 但当我尝试输出函数生成的文本时,它不起作用: 我通常会得到一个字符缓冲区错误 请告诉我需要做哪些不同的操作。您可能希望从函数返回字符串,而不是打印字符串。大概是这样的: def fn(a,b,c): return "Template string {0} {1} {2}".format(a,b,c)
请告诉我需要做哪些不同的操作。您可能希望从函数返回字符串,而不是打印字符串。大概是这样的:
def fn(a,b,c):
return "Template string {0} {1} {2}".format(a,b,c)
对于迭代/连接部分,这应该满足您的需要。请注意,需要显式添加换行符“\n”,如果您使用的是打印,则不会出现这种情况
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
谢谢。您可能希望从函数返回字符串,而不是打印字符串。大概是这样的:
def fn(a,b,c):
return "Template string {0} {1} {2}".format(a,b,c)
对于迭代/连接部分,这应该满足您的需要。请注意,需要显式添加换行符“\n”,如果您使用的是打印,则不会出现这种情况
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
谢谢。您的问题在于函数本身,而不是将输出写入文件。您编写的函数没有使用return。这在python中是合法的,但这意味着函数在默认情况下将不返回任何值 而不是说
print "votes%d_%d.append(v%d_%d_%d)" % (b,c,a,b,c,)
使用
然后您可以像前面一样调用您的函数
x, x2 = myfunc()
out_file = open("code.txt", "w")
out_file.write(x)
#etc.
您正在使用。请正确书写-但您所写的都是零。请记住,打印只与终端对话,而不是与文件或变量对话。您的问题在于函数本身,而不是将输出写入文件。您编写的函数没有使用return。这在python中是合法的,但这意味着函数在默认情况下将不返回任何值 而不是说
print "votes%d_%d.append(v%d_%d_%d)" % (b,c,a,b,c,)
使用
然后您可以像前面一样调用您的函数
x, x2 = myfunc()
out_file = open("code.txt", "w")
out_file.write(x)
#etc.
您正在使用。请正确书写-但您所写的都是零。请记住,打印只与终端对话,而不与文件或变量对话。这也扩展到了@Nathan,但这带来了一个新问题。当我像这样使用print时,它会按照我的要求进行迭代。当我像这样使用您的方法时:它不会迭代。与使用Print时出现的多行文本不同,文件中只写入了一行文本。好的,这里有一个微妙的错误:函数在第一次命中return语句时停止执行,因此您的函数只将数据返回到写入。一定要在同一行上返回data\u to\u write、data\u to\u write\u two、data\u to\u write\u three,不要拆分返回语句。在将行写入文件时,还必须显式循环。请尝试x=myfunc,然后输入x:out\u文件中的行。请写入“%s\n”%line,对注释中缺少换行符表示歉意。在open中,您还使用了“a”而不是“w”,这是行不通的。谢谢,这也扩展到了@Nathan,但这带来了一个新问题。当我像这样使用print时,它会按照我的要求进行迭代。当我像这样使用您的方法时:它不会迭代。与使用Print时出现的多行文本不同,文件中只写入了一行文本。好的,这里有一个微妙的错误:函数在第一次命中return语句时停止执行,因此您的函数只将数据返回到写入。一定要在同一行上返回data\u to\u write、data\u to\u write\u two、data\u to\u write\u three,不要拆分返回语句。在将行写入文件时,还必须显式循环。请尝试x=myfunc,然后输入x:out\u文件中的行。请写入“%s\n”%line,对注释中缺少换行符表示歉意。在open中使用“a”而不是“w”,这将不起作用。