Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python初学者:将函数生成的文本输出到文件_Python_Python 2.7 - Fatal编程技术网

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)

Python新手,正在运行2.7

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

我可以用Python打印函数

我在输出手动输入的文本时没有问题:像这样

但当我尝试输出函数生成的文本时,它不起作用:

我通常会得到一个字符缓冲区错误


请告诉我需要做哪些不同的操作。

您可能希望从函数返回字符串,而不是打印字符串。大概是这样的:

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”,这将不起作用。