Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.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/8/logging/2.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中同时运行的单独文件重定向stderr_Python_Logging_Stderr - Fatal编程技术网

为在Python中同时运行的单独文件重定向stderr

为在Python中同时运行的单独文件重定向stderr,python,logging,stderr,Python,Logging,Stderr,我有一个在终端中连续运行的脚本,我已将该文件中的stderr重定向到日志文件: sys.stderr = open('redirect/log/file.log', 'a') 这正如预期的那样有效。当程序在后台运行时,脚本中发生的所有错误都会发送到日志文件 然而,当我使用Python编写一个完全独立的脚本时,我正在做的工作的stderr会被发送到同一个日志文件中。比如当我写作的时候 raise ValueError('error') 在我正在处理的文件中,控制台中没有显示任何内容,而是发送到

我有一个在终端中连续运行的脚本,我已将该文件中的stderr重定向到日志文件:

sys.stderr = open('redirect/log/file.log', 'a')
这正如预期的那样有效。当程序在后台运行时,脚本中发生的所有错误都会发送到日志文件

然而,当我使用Python编写一个完全独立的脚本时,我正在做的工作的stderr会被发送到同一个日志文件中。比如当我写作的时候

raise ValueError('error')
在我正在处理的文件中,控制台中没有显示任何内容,而是发送到该日志文件

我如何隔离它,以便只将该脚本的stderr发送到日志文件

理想情况下,连续运行的程序的stderr会被发送到日志中,而在Python中运行或当前正在处理的任何其他内容都会正常工作


为了可视化,我正在使用Pycharm IDE处理一个包。我有一个终端窗口,在包中运行一个脚本,在while循环中进行计算(连续)。使用上述代码在该脚本中显式重定向stderr。然后在我正在处理的包中有另一个文件,该文件根本没有被正在运行的脚本使用。我在处理这个单独的脚本时发生的任何错误都不会显示在控制台中,而是发送到另一个正在运行的脚本的日志文件中

你能补充更多细节吗?我不太明白一个完全独立的脚本如何写入同一个日志文件,除非你明确告诉它。@kazemakase我编辑了我的问题。一些补充资料。这对我来说也没有意义。也许是设置了整个包的stderr?为什么要进行Pyhton端stderr重定向,而不是使用shell重定向?也就是说,
python myscript.py 2>错误。log
?@Joe:stderr是为整个操作系统进程设置的。在同一个Python解释器下运行的所有程序都将共享它。脚本的正确方法是允许显式输出文件参数,或者使用例如
日志记录
,以便可以对其特定的记录器进行不同的配置。如果脚本所做的只是写入stdout,那么让该脚本写入与同时运行的其他代码不同的文件的唯一选择恐怕是使用两个单独的进程。在shell中,您可以定义一个变量并写入
myscript 2>%NAME\u OF_LOG\u FILE%
(在Windows上)。