如何为 shutil.copyfileobj 设置目的地?

How to set a destination for shutil.copyfileobj?

这段代码将一个不和谐的图像保存到它所在的文件夹中。我试图为保存文件设置一个目的地,但我没有在 shutil 网站上找到任何设置目的地的东西。我试图将目的地放在 shutil.copyfileobj 括号中,但这没有用。我对编码也比较陌生。

这是代码:

import uuid
import requests
import shutil
from discord.ext import commands

class filesaver:

    @bot.command()
    async def save(ctx):
        try:
            url = ctx.message.attachments[0].url
        except IndexError:
            print("Error: No Attachments")
            await ctx.send("No Attachments detected!")
        
        else:
            if url[0:26] == "https://cdn.discordapp.com":
                r= requests.get(url, stream=True)
                imageName = str(uuid.uuid4()) + '.jpg'
                with open(imageName, 'wb') as out_file:
                    print('saving image: ' + imageName)
                    shutil.copyfileobj(r.raw, out_file)

        await ctx.send(f"text")

您的 imageName 不包含路径,因此它会在您当前的工作目录中打开。这有点不可预测。它也很容易修复。

from pathlib import Path
imageName = str(Path.home() / Path(str(uuid.uuid4()) + '.jpg'))

您当然可以将 Path.home() 替换为您喜欢的任何目标路径。