【问题标题】:Why I am getting this error: TypeError: 'Namespace' object is not subscriptable [duplicate]为什么我收到此错误:TypeError:'Namespace' object is not subscriptable [重复]
【发布时间】:2021-11-15 23:01:19
【问题描述】:

我遇到了 argparse 库的问题。

我有 encodings.pickle 文件,我正在按照下面的代码来识别演员,但它似乎加载嵌入不起作用。

代码如下:

ap = argparse.ArgumentParser()
ap.add_argument("-e", "--encodings", required=True,
                help="path to serialized db of facial encodings")
ap.add_argument("-i", "--image", required=True,
                help="path to input image")
ap.add_argument("-d", "--detection-method", type=str, default="cnn",
                help="face detection model to use: either `hog` or `cnn`")
ap.add_argument("-fnn", "--fast-nn", action="store_true")
args = parser.parse_args('')
print(args)

# load the known faces and embeddings
print("[INFO] loading encodings...")
data = pickle.loads(open(args["encodings"], "rb").read())

源代码:

https://github.com/divya21raj/Actor-Recognition-In-Movies/blob/master/faceRecVideo.py

【问题讨论】:

    标签: python


    【解决方案1】:

    您收到此错误是因为 parse_args() 方法返回一个包含已解析参数的命名空间。

    打印该方法的结果时,您将看到创建的命名空间:Namespace(encodings='encoding', image='image', detection_method='cnn', fast_nn=False)

    为了访问参数,您应该使用点表示法(即args.encodingsargs.image

    修改代码:

    ap = argparse.ArgumentParser()
    ap.add_argument("-e", "--encodings", required=True,
                    help="path to serialized db of facial encodings")
    ap.add_argument("-i", "--image", required=True,
                    help="path to input image")
    ap.add_argument("-d", "--detection-method", type=str, default="cnn",
                    help="face detection model to use: either `hog` or `cnn`")
    ap.add_argument("-fnn", "--fast-nn", action="store_true")
    args = parser.parse_args()
    print(args)
    
    # load the known faces and embeddings
    print("[INFO] loading encodings...")
    data = pickle.loads(open(args.encodings, "rb").read())
    

    【讨论】:

    • 仍然面临同样的错误。您能否通过修改上述代码来澄清一下?恐怕我错过了什么。
    • 修改@AhmedAbousari。
    • 解析器未定义,所以我做了以下操作: parser = argparse.ArgumentParser() args = parser.parse_args() 发生异常,使用 %tb 查看完整的回溯。系统退出:2
    • 当我将代码修改为:args = parser.parse_args('') 我收到以下错误:AttributeError: 'Namespace' object has no attribute 'encodings' 但是如果我像你的代码一样没有(''): args = parser.parse_args() 我收到以下错误:发生异常,使用 %tb 查看完整的回溯。系统退出:2
    猜你喜欢
    • 2022-07-06
    • 2020-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 2018-01-23
    • 2018-02-05
    相关资源
    最近更新 更多