如何阻止 Python 的 Sys 模块的 "stdout" 和 "stderr" write 方法返回写入的字符数

How do I stop Python's Sys module's "stdout" and "stderr" write method from returning the numbers of characters written

每当我在 Python 的内置“sys”模块中使用 stdoutstderr 对象的 write 方法时 Python 对于 Python 解释器,该方法还打印一个整数,表示字符串中的字符数,该字符串位于我作为 text 参数的参数提供的字符串之后 stdoutstderr 方法,这真的很令人沮丧,因为我只想要文本,而不是字符串长度。 例如:

>>> sys.stdout.write('string')
string6

我只想打印“'string'”,而不是字符串长度 (6)。 我试图通过使用 sys.stdout.write('string')[:-1] 来解决这个问题,我认为这也会删除字符串

之后放置的字符数

然后我发现我作为参数提供的字符串中的字符数出现了,因为我使用了解释器,并且解释器打印了函数返回但未打印的值。

所以我想做的是调用 sys.stdout.write('test') 但阻止它返回我作为 text 参数提供的字符串中的字符数。我该怎么做?

您不能阻止一个现成的函数在您调用它时执行它所执行的操作。你可以做的是通过对它做一些事情来阻止 Python 解释器打印返回值,例如。 G。将其分配给变量。

sys.stdout.write 还在方法调用中作为参数提供给 text 参数的字符串后打印整数,因为 stdoutwrite 方法object 也 returns text 参数参数的长度, Python REPL/Interpreter 也打印出返回值,这就是你的问题的答案。

因此,要阻止它打印出 text 字符串的长度,只需将 sys.stdout.write 方法调用分配给一个变量,因为它会调用该函数,然后您可以 del 执行后的变量,因为您不需要为 text 参数提供的字符串中返回的字符数。

此问题的另一种解决方案是在函数中调用 sdtout 对象的 write 方法,然后像这样调用该函数:

def show_text(txt):
    from sys import stdout
    stdout.write(txt)
    return
show_text('Hello!)