Python Mutagen标签KeyError,标签不存在时如何传递

问题描述

在 Mutagen 中,我从音频文件中读取标签,但是当标签不存在时,我当然会收到错误

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers();

        services.AddAuthentication(IdentityServerAuthenticationDefaults.AuthenticationScheme)
            .AddJwtBearer(Options =>
            {
                Options.Authority = "https://identity.domain.com/identity/";
                Options.Audience = "resource1"; //your api baseurl e.g if you want userinfo_endpoint  specify https://identity.domain.com/identity/connect/userinfo

                Options.TokenValidationParameters.ValidTypes = new[] { "at+jwt" };
            })
            .AddIdentityServerAuthentication(options =>
            {
                options.Authority = "https://identity.domain.com/identity/";
                options.ApiName = "api name / scope";
                options.ApiSecret = "api secret / scope secret";
            });

        services.AddAuthorization(options =>
        {
            options.AddPolicy("tokens",x =>
            {
                x.AddAuthenticationSchemes("jwt","introspection");
                x.RequireAuthenticatedUser();
            });
        });
    }

如果标签不存在,如何继续?

我已经尝试过:

audio = ID3(musicfile)
print(audio['TXXX:SERIES'].text[0])

KeyError: 'TXXX:SERIES'

还有

 if audio['TXXX:SERIES'].text[0] is None:
        print('No series')
    else:

仍然报错。

if not audio['TXXX:SERIES'].text[0]:
            print('No series')
        else:

解决方法

你必须使用try/except:

try:
    print(audio['TXXX:SERIES'].text[0])
except:
    print('An exception occurred')

如果你希望在异常发生时什么都不发生,只需使用 pass:

try:
    print(audio['TXXX:SERIES'].text[0])
except:
    pass

您可以在此处了解有关捕获异常/异常处理的更多信息:https://docs.python.org/3/tutorial/errors.html