首页 > 解决方案 > 如何在 API 调用中过滤带有扩展名的文件名?

问题描述

我正在使用 python confluence API 从 confluence 页面下载附件,我只需要下载带有.mpp扩展名的文件。尝试使用glob和直接参数,但没有用。

这是我的代码:

file_name = glob.glob("*.mpp")
attachments_container = confluence.get_attachments_from_content(page_id=33110, start=0, limit=1,filename=file_name)
print(attachments_container)
attachments = attachments_container['results']
for attachment in attachments:
    fname = attachment['title']
    download_link = confluence.url + attachment['_links']['download']
    r = requests.get(download_link, auth = HTTPBasicAuth(confluence.username,confluence.password))
    if r.status_code == 200:
        if not os.path.exists('phoenix'):
            os.makedirs('phoenix')
        fname = ".\\phoenix\\" +fname

标签: pythonapiconfluence

解决方案


glob.glob()在您的本地文件夹上运行。因此,您不能将其用作get_attachments_from_content(). 另外,不要指定 a limitof 因为这只会给你一个/第一个附件。指定一个上限或任何默认值将包括所有这些。(您可能需要对结果进行分页。)

title但是,您可以通过在下载之前检查每个附件的 来排除您不想要的文件,您拥有fname = attachment['title'].

attachments_container = confluence.get_attachments_from_content(page_id=33110, limit=1000)
attachments = attachments_container['results']
for attachment in attachments:
    fname = attachment['title']
    if not fname.lower().endswith('.mpp'):
        # skip file if it's not got that extension
        continue
    download_link = ...
    # rest of your code here

此外,您的代码看起来像是来自此答案的复制粘贴,但您已经更改了它的实际“下载”部分。因此,如果您的下一个 StackOverflow 问题是“如何从 confluence 下载文件”,请使用该答案的代码。


推荐阅读