Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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 3.x_Macos Mojave_Suppress Warnings - Fatal编程技术网

如何抑制python脚本中的特定警告?

如何抑制python脚本中的特定警告?,python,python-3.x,macos-mojave,suppress-warnings,Python,Python 3.x,Macos Mojave,Suppress Warnings,我得到了一个我可以完全忽略的特别警告。这个警告可能最终会被修补,我的目标是从我的控制台中删除该警告(为了将其清除,我需要查看的垃圾邮件更少) 具体来说,我正试图在macOS Mojave上的Python3包PySimpleGUI中使用FolderBrowse()。这会弹出以下消息(在运行时): objc[2542]:类FIFinderSyncExtensionHost在/System/Library/PrivateFrameworks/FinderKit.framework/Versions/A

我得到了一个我可以完全忽略的特别警告。这个警告可能最终会被修补,我的目标是从我的控制台中删除该警告(为了将其清除,我需要查看的垃圾邮件更少)

具体来说,我正试图在macOS Mojave上的Python3包
PySimpleGUI
中使用
FolderBrowse()。这会弹出以下消息(在运行时):

objc[2542]:类FIFinderSyncExtensionHost在/System/Library/PrivateFrameworks/FinderKit.framework/Versions/A/FinderKit(0x7fff9408e3d8)中实现和/System/Library/PrivateFrameworks/FileProvider.framework/OverrideBundles/FinderSyncCollaborationFileProviderOverride.bundle/Contents/MacOS/FinderSyncCollaborationFileProviderOverride(0x1073e4f50)。将使用其中一个。哪一个未定义。

同样,我在这里的意图是忽略上述警告,而不是自己修复它

我见过其他python警告抑制问题,例如

但是,我并不是试图隐藏一组警告(例如:
DeprecationWarning
)。相反,我只想隐藏上面显示的一个警告

编辑,我正在使用的代码:

import PySimpleGUI as sg
window_rows = [[sg.InputText(), sg.FolderBrowse()]]
sg.Window('', window_rows).Read()
请参阅的文档中的部分 模块:

如果您使用的代码知道会引发警告,例如不推荐使用的函数,但不想看到警告(即使通过命令行显式配置了警告),则可以使用catch_warnings上下文管理器抑制警告:

导入警告
def fxn():
警告。警告(“已弃用”,弃用警告)
带有警告。捕获警告()
警告。simplefilter(“忽略”)
fxn()
在上下文管理器中,所有警告都将被忽略。这允许您使用已知的不推荐使用的代码,而不必查看警告,同时不抑制其他可能不知道使用了不推荐使用的代码的代码的警告。(……)

这似乎正是您需要的,不是吗?

请参阅 模块:

如果您使用的代码知道会引发警告,例如不推荐使用的函数,但不想看到警告(即使通过命令行显式配置了警告),则可以使用catch_warnings上下文管理器抑制警告:

导入警告
def fxn():
警告。警告(“已弃用”,弃用警告)
带有警告。捕获警告()
警告。simplefilter(“忽略”)
fxn()
在上下文管理器中,所有警告都将被忽略。这允许您使用已知的不推荐使用的代码,而不必查看警告,同时不抑制其他可能不知道使用了不推荐使用的代码的代码的警告。(……)


这似乎正是您所需要的,不是吗?

我发现类似这样的方法适用于此错误:

copied_stderr = 0
try:
    if is_mac:
        # Redirect stderr to /dev/null to hide annoying FIFinderSyncExtensionHost warning
        copied_stderr = os.dup(2)
        devnull = os.open(os.devnull, os.O_WRONLY)
        os.dup2(devnull, 2)
        os.close(devnull)
    result = func(**args)
finally:
    if copied_stderr > 0:
        os.dup2(copied_stderr, 2)
        os.close(copied_stderr)

如果您不止一次遇到这种情况,您可以创建一个执行重定向的contextmanager。

我发现类似这样的操作适用于此错误:

copied_stderr = 0
try:
    if is_mac:
        # Redirect stderr to /dev/null to hide annoying FIFinderSyncExtensionHost warning
        copied_stderr = os.dup(2)
        devnull = os.open(os.devnull, os.O_WRONLY)
        os.dup2(devnull, 2)
        os.close(devnull)
    result = func(**args)
finally:
    if copied_stderr > 0:
        os.dup2(copied_stderr, 2)
        os.close(copied_stderr)

如果您不止一次遇到这种情况,您可以创建一个contextmanager来执行重定向。

这实际上不是python警告,因此不起作用。@ChristopherBarber,谢谢您的评论。你可能是对的,但我自己无法重现这个问题,而且这个问题也不完全清楚(事实上,它几乎没有提到“Python警告”这个术语,还提到了例如
DeprecationWarning
)。因此,即使这个答案不能解决OP的问题,对于其他有类似问题的用户来说,它可能仍然很有用,可以通过标题找到这个问题。这实际上不是python警告,所以这不起作用。@Christopher,谢谢你的评论。你可能是对的,但我自己无法重现这个问题,而且这个问题也不完全清楚(事实上,它几乎没有提到“Python警告”这个术语,还提到了例如
DeprecationWarning
)。因此,即使这个答案不能解决OP的问题,它也可能对其他有类似问题的用户有用,并且可以通过标题找到这个问题。