Python 问题是显示AttributeError:';str';对象没有属性';加载';?
代码应该在哪里更改?我的python版本是3.7.4。在这里,我还使用了json.loads(),但得到了相同类型的错误。 以下是我的python代码: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
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)