我正在尝试使用以下内容以json格式在我的保管箱中输出某些文件的元数据。
for entry in dbx.files_list_folder(path = '/TG/').entries:
print(entry.name)
path = ("/TG/" + str(entry.name))
data_output = {dbx.files_get_metadata(path=path)}
if '.py' in path:
print(data_output)
with open(write_file, 'w') as outfile:
json.dump(data_output, outfile)
它正在输出TypeError:类型集的对象不是JSON可序列化的。
通过使用{
和}
,您将files_get_metadata
调用的结果放入files_get_metadata
,该文件不可JSON序列化。在您共享的代码中,这里似乎不需要任何设置,因此您只需删除set
和{
。这将保留实际的}
类型,尽管这实际上也不是JSON可序列化的。您需要将其转换为对您的用例有意义的内容。例如,最简单的是,只需在其上调用FileMetadata
。
此外,按照编写的方式,您的代码有点多余。 str
方法已经为您提供了从files_list_folder
中获得的相同信息,因此您可以删除files_list_folder
调用。 files_get_metadata
方法返回与files_get_metadata
返回的相同files_list_folder
对象的列表。 (删除Metadata
调用也应该使您的代码运行得更快。)
而且,您可以直接从条目中获取路径,而无需对其进行重构。
经过所有这些更改,看起来就像:
files_get_metadata