我可以在Python中将所有输出重定向到/dev/null吗?
我正在写一个Python脚本,这个脚本会创建一个子进程。父进程应该能够输出一些信息,比如Started child at xxxxx
,但是子进程的输出需要被重定向到/dev/null
。我该怎么在Python中做到这一点呢?
2 个回答
0
如果有人想找一种跨平台的方法,把输出重定向到一个叫做null file
的地方,我们可以用os.devnull
这个属性来指定我们想把输出重定向到null file
。
import sys
import os
stderr = sys.stderr
stdout = sys.stdout
# print(os.devnull)
print("Hell o World!")
sys.stdout = open(os.devnull, 'w')
sys.stderr = open(os.devnull, 'w')
print("This is redirected to null")
输出:
Hell o World!
首先,我们为默认的标准输出
和标准错误
创建一个备份:
stderr = sys.stderr
stdout = sys.stdout
然后我们把消息显示在默认的标准输出
上:
print("Hell o World!")
接下来,我们把输出消息和错误消息重定向到null file
:
sys.stdout = open(os.devnull, 'w')
sys.stderr = open(os.devnull, 'w')
这里我们在验证输出是否已经重定向到null file
:
print("This is redirected to null")
如果你想找找null file
具体在哪里,可能会得到不同的结果,因为这取决于运行Python程序的操作系统:
print(os.devnull)
如果你想把输出和错误消息重置回默认的标准输出
和标准错误
,可以使用这种方法:
import sys
import os
stderr = sys.stderr
stdout = sys.stdout
sys.stdout = open(os.devnull, 'w')
sys.stderr = open(os.devnull, 'w')
print("This is redirected to null.")
sys.stderr = stderr
sys.stdout = stdout
print("This is redirected to the standard output.")
输出:
This is redirected to the standard output.
13
在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解这些数据,我们通常需要将它们转换成一种程序可以处理的格式。
比如说,如果你从一个表单获取用户的名字,这个名字可能是字符串格式的。为了在程序中使用这个名字,我们可能需要把它放到一个变量里,这样我们就可以在后面的代码中随时调用它。
另外,有些数据可能需要经过一些处理,比如计算、排序或者过滤。处理完的数据可以帮助我们做出更好的决策,或者让程序的功能更加丰富。
总之,数据处理是编程中非常重要的一部分,它帮助我们将原始数据转化为有用的信息。
import sys
old_stdout, old_stderr = sys.stdout, sys.stderr
sys.stdout = open('/dev/null', 'w')
sys.stderr = open('/dev/null', 'w')