我想知道如何将print
函数(或任何函数)的输出分配给变量。举个例子:
import eyeD3
tag = eyeD3.Tag()
tag.link("/some/file.mp3")
print tag.getArtist()
如何将print tag.getArtist
的输出分配给变量?
答案 0 :(得分:21)
Python中的print
语句将其参数转换为字符串,并将这些字符串输出到stdout。要将字符串保存到变量,只需将其转换为字符串:
a = str(tag.getArtist())
答案 1 :(得分:7)
可能您需要str
,repr
或unicode
函数之一
somevar = str(tag.getArtist())
取决于您使用的是哪个python shell
答案 2 :(得分:5)
somevar = tag.getArtist()
答案 3 :(得分:1)
请注意,我根据 Python 3.x
撰写了此答案。不用担心,您可以将print()
语句分配给这样的变量。
>>> var = print('some text')
some text
>>> var
>>> type(var)
<class 'NoneType'>
根据文档
所有非关键字参数都像
str()
一样转换为字符串,并写入流中,以sep分隔,然后以end分隔。 sep和end都必须是字符串;它们也可以是None
,表示使用默认值。如果未提供任何对象,则print()只会写完。file参数必须是具有
write(string)
方法的对象;如果它不存在或None
,将使用sys.stdout
。由于打印的参数将转换为文本字符串,因此print()
不能与二进制模式文件对象一起使用。对于这些,请改用file.write(...)
。
这就是为什么我们不能为变量分配print()
语句值的原因。在这个问题中,您要询问(or any function)
。因此print()
也是一个函数,其返回值带有None
。因此,python function的返回值为None
。但是您可以调用函数(带有括号())并以这种方式保存返回值。
>>> var = some_function()
因此var
变量的返回值为some_function()
或默认值为None
。根据有关print()
,All non-keyword arguments are converted to strings like str() does and written to the stream
的文档。让我们看看str()
内部发生了什么。
返回string版本的对象。如果未提供object,则返回空字符串。否则,
str()
的行为取决于是否给出编码或错误,如下所示。
这样我们得到了一个字符串对象,那么您可以如下修改下面的代码行,
>>> var = str(some_function())
或者,如果您确实有str.join()
对象,则可以使用string
。
返回一个字符串,该字符串是可迭代的字符串的串联。如果可迭代项中有任何非字符串值,包括
TypeError
对象,则会引发bytes
。元素之间的分隔符是提供此方法的字符串。
更改可以如下,
>>> var = ''.join(some_function()) # you can use this if some_function() really returns a string value
答案 4 :(得分:1)
这是一个独立示例,展示了如何在 Python 3 中保存用户编写的函数的输出:
from io import StringIO
import sys
def print_audio_tagging_result(value):
print(f"value = {value}")
tag_list = []
for i in range(0,1):
save_stdout = sys.stdout
result = StringIO()
sys.stdout = result
print_audio_tagging_result(i)
sys.stdout = save_stdout
tag_list.append(result.getvalue())
print(tag_list)
答案 5 :(得分:0)
更笼统地回答问题how to redirect standard output to a variable ?
执行以下操作:
from io import StringIO
import sys
result = StringIO()
sys.stdout = result
result_string = result.getvalue()
如果仅需要在某些功能中执行此操作,请执行以下操作:
old_stdout = sys.stdout
# your function containing the previous lines
my_function()
sys.stdout = old_stdout