Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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 问题是显示AttributeError:';str';对象没有属性';加载';?_Python_Python 3.7 - Fatal编程技术网

Python 问题是显示AttributeError:';str';对象没有属性';加载';?

Python 问题是显示AttributeError:';str';对象没有属性';加载';?,python,python-3.7,Python,Python 3.7,代码应该在哪里更改?我的python版本是3.7.4。在这里,我还使用了json.loads(),但得到了相同类型的错误。 以下是我的python代码: def get_original_video_paths(root_dir_json,basename=False): for json_path in glob(root_dir_json): with open(json_path, "r") as f: metad

代码应该在哪里更改?我的python版本是3.7.4。在这里,我还使用了json.loads(),但得到了相同类型的错误。 以下是我的python代码:

def get_original_video_paths(root_dir_json,basename=False):
   
    for json_path in glob(root_dir_json):
        with open(json_path, "r") as f:
            metadata = json.load(f)
显示错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-42-625a577bf289> in <module>
     49     json='F:/deepfake_data/metadata/metadata.json'
     50     data_folder='F:/deepfake_data/train_sample_videos_2'
---> 51     ids = get_original_video_paths(json)
     52     #ids = get_original_video_paths(json)
     53 

<ipython-input-41-a0214372cfb6> in get_original_video_paths(root_dir_json, basename)
     17         dir = Path(json_path)
     18         with open(json_path, "r") as f:
---> 19             metadata = json.load(f)
     20 
     21         for k, v in metadata.items():

AttributeError: 'str' object has no attribute 'load'

重复@DeepSpace的评论,问题在于您调用
get\u original\u video\u path之前的那行代码:

json='F:/deepfake_data/metadata/metadata.json'
json
变量提供对
json
模块的访问,通过使变量引用元数据文件的路径,您的任何代码都无法访问
json
模块及其功能

    with open(json_path, "r") as f:
--->    metadata = json.load(f)
AttributeError: 'str' object has no attribute 'load'
错误消息,
'str'对象没有属性'load'
,表示它查看了
json
变量引用的内容,获取了显示文件路径的字符串(
str
),并尝试在字符串中查找名为
load
的方法

解决方案 解决这个问题的简单方法是,变量的名称不能与导入的模块相同。例如,您可以调用元数据文件的路径“path”或“metadata”:


您不能将字符串重新分配给
json
,但仍希望能够访问
json
module@DeepSpace现在,我可以在哪里更改代码?因为问题是您重新分配给了
json
,所以请尽量不要更改
path='F:/deepfake\u data/metadata/metadata.json'
@DeepSpace,我也尝试了这种方法,bt得到了相同的错误。id=get\u original\u video\u path('F:/deepfake\u data/metadata/metadata.json'))
    with open(json_path, "r") as f:
--->    metadata = json.load(f)
AttributeError: 'str' object has no attribute 'load'
metadata = 'F:/deepfake_data/metadata/metadata.json'
data_folder = 'F:/deepfake_data/train_sample_videos_2'
ids = get_original_video_paths(metadata)