Python 在创建副本的同时重命名文件名?

Python 在创建副本的同时重命名文件名?,python,filesystems,Python,Filesystems,我花了4个小时试图解决这个问题。我正在从网站下载图像并将其存储在Users/Temp中。我想做的是,在下载图像时,检查临时文件夹,看看是否有同名的文件夹。如果有,则使用f字符串和计数器重命名它们,但仍然下载并保存它们 for bmp in bmp_list: fullfilename = os.path.join(f'{dl_location}', f'{bmp}') dl_link = url + bmp urllib.request.urlr

我花了4个小时试图解决这个问题。我正在从网站下载图像并将其存储在Users/Temp中。我想做的是,在下载图像时,检查临时文件夹,看看是否有同名的文件夹。如果有,则使用f字符串和计数器重命名它们,但仍然下载并保存它们

 for bmp in bmp_list:
        fullfilename = os.path.join(f'{dl_location}', f'{bmp}')
        dl_link = url + bmp
        urllib.request.urlretrieve(dl_link, fullfilename)

        if os.path.isfile(fullfilename):
            print('file already exists, renaming.')
            os.rename(fullfilename, f'copy{c}-{fullfilename}')
            c =+1
        else: None
我知道我的代码正在创建文件,然后检查它是否在那里,很明显它在那里,因为我刚刚复制了它,但我被卡住了。 非常感谢您的帮助

编辑:当我运行此代码时,会收到错误消息

FileNotFoundError: [Errno 2] No such file or directory: '/Users/Home/Temp/CW/monty-python-(1).bmp' -> 'copy1-/Users/Home/Temp/CW/monty-python-(1).bmp'

问题似乎是在绝对路径前面加上
copy{c}
。改为使用后缀:

os.rename(fullfilename, f'{fullfilename}-copy{c}')
此外,下载前还需要重命名现有文件。下载太晚后,原始文件已不存在。因此,在下载步骤之前移动
if
语句

最后,使用简单后缀的缺点是它位于文件扩展名
.bmp
之后。一个简单的补救方法是使用
f'{fullfilename}-copy{c}.bmp'作为新名称,缺点是

.bmp`两次。如果这对您来说是一个问题,那么您可以做得更好,做更多的工作,拆分基本名称和扩展名,并使用基本名称将新名称格式化为所需的格式。

您的实际问题是什么?你看到了什么行为或错误?同样,这个引用也差不多:它会覆盖原始文件。它还会更改文件扩展名。它会停止错误并运行程序,但随后会覆盖原始文件。