Python Google Drive API如何找到文件的路径?
在使用GoogleDrive API获取文件列表时,我试图找到文件的路径 现在,我能够获取文件属性(目前仅获取校验和、id、名称和mimeType): (提供给list()方法的参数) (每个文件返回的属性)Python Google Drive API如何找到文件的路径?,python,google-api,google-drive-api,google-api-python-client,Python,Google Api,Google Drive Api,Google Api Python Client,在使用GoogleDrive API获取文件列表时,我试图找到文件的路径 现在,我能够获取文件属性(目前仅获取校验和、id、名称和mimeType): (提供给list()方法的参数) (每个文件返回的属性) 您希望从自己的Google驱动器中的文件检索文件夹树。 您希望检索文件路径。因此,在您的情况下,它会在每个文件和文件夹上方检索父文件夹 您希望通过使用带有python的google api python客户端来实现这一点 您已经能够使用驱动器API获取文件元数据 如果我的理解是正确的
- 您希望从自己的Google驱动器中的文件检索文件夹树。
- 您希望检索文件路径。因此,在您的情况下,它会在每个文件和文件夹上方检索父文件夹
- 您希望通过使用带有python的google api python客户端来实现这一点
- 您已经能够使用驱动器API获取文件元数据
fileId = '###' # Please set the file ID here.
tree = [] # Result
file = globalShares.service.files().get(fileId=fileId', fields='id, name, parents').execute()
parent = file.get('parents')
if parent:
while True:
folder = service.files().get(
fileId=parent[0], fields='id, name, parents').execute()
parent = folder.get('parents')
if parent is None:
break
tree.append({'id': parent[0], 'name': folder.get('name')})
print(tree)
结果:
如果文件具有三层结构,则在运行脚本时,将返回以下对象
[
{
"id": "folderId3",
"name": "folderName3"
},
{
"id": "folderId2",
"name": "folderName2"
},
{
"id": "folderId1",
"name": "My Drive" # This is the root folder.
}
]
- 第一个元素是底层
- 在这个脚本中,根据OP想要检索“文件路径”的情况,它假设每个文件只有一个父文件。在Google Drive的文件系统中,每个文件可以有多个父文件。如果在您的情况下,有多个文件具有多个父级,则此脚本将返回父级数组的第一个元素。请小心这个。这一点我也提到过
-
- 作为另一个示例,有一个用于从Google驱动器检索文件夹树的库
- 您希望从自己的Google驱动器中的文件检索文件夹树。
- 您希望检索文件路径。因此,在您的情况下,它会在每个文件和文件夹上方检索父文件夹
- 您希望通过使用带有python的google api python客户端来实现这一点
- 您已经能够使用驱动器API获取文件元数据
fileId = '###' # Please set the file ID here.
tree = [] # Result
file = globalShares.service.files().get(fileId=fileId', fields='id, name, parents').execute()
parent = file.get('parents')
if parent:
while True:
folder = service.files().get(
fileId=parent[0], fields='id, name, parents').execute()
parent = folder.get('parents')
if parent is None:
break
tree.append({'id': parent[0], 'name': folder.get('name')})
print(tree)
结果:
如果文件具有三层结构,则在运行脚本时,将返回以下对象
[
{
"id": "folderId3",
"name": "folderName3"
},
{
"id": "folderId2",
"name": "folderName2"
},
{
"id": "folderId1",
"name": "My Drive" # This is the root folder.
}
]
- 第一个元素是底层
- 在这个脚本中,根据OP想要检索“文件路径”的情况,它假设每个文件只有一个父文件。在Google Drive的文件系统中,每个文件可以有多个父文件。如果在您的情况下,有多个文件具有多个父级,则此脚本将返回父级数组的第一个元素。请小心这个。这一点我也提到过
-
- 作为另一个示例,有一个用于从Google驱动器检索文件夹树的库
父文件夹
添加到字段
时,将返回文件的父文件夹ID。在您的情况下,您希望检索文件的文件夹树。我的理解正确吗?谢谢你的回答。我提出了一个示例脚本作为答案。你能确认一下吗?如果我误解了您的问题,并且这不是您想要的结果,我很抱歉。请尝试停止考虑文件路径。GoogleDrive是一个平面文件系统,其中“parent”只是一个属性,有点像标签。一个文件可以有多个父文件,也可以有多个路径。@Tanaike请取消删除您的答案。这是一个很好的答案,对OP非常有帮助。我建议您对答案稍加修改,以解释父项[0]
仅在单亲情况下有效。如果OP有多个路径,他可以扩展你的脚本来迭代父对象。我可以问你想要的“文件路径”吗?是否要检索父文件夹ID?感谢您的回复。对将父文件夹
添加到字段
时,将返回文件的父文件夹ID。在您的情况下,您希望检索文件的文件夹树。我的理解正确吗?谢谢你的回答。我提出了一个示例脚本作为答案。你能确认一下吗?如果我误解了您的问题,并且这不是您想要的结果,我很抱歉。请尝试停止考虑文件路径。GoogleDrive是一个平面文件系统,其中“parent”只是一个属性,有点像标签。一个文件可以有多个父文件,也可以有多个路径。@Tanaike请取消删除您的答案。这是一个很好的答案,对OP非常有帮助。我建议您对答案稍加修改,以解释父项[0]
仅在单亲情况下有效。如果OP有多个路径,他可以扩展您的脚本以迭代父级。脚本硬编码父级[0]
,但可能有多个父级。@pinoyyid谢谢您的评论。对我知道。从OP想要检索“文件路径”的情况来看,我认为该文件只有一个父级。因此,首先,我确认了这一点,并提出了一个简单的脚本。但是从你的评论来看,我认为我的建议不适合谷歌硬盘的文件系统。所以我想删除我的答案。我为我的拙劣技能深表歉意。我认为我必须学习越来越多