重命名文件名的同时还创建副本



我在最后4个小时试图解决这个问题。我正在从网站下载图像并将其存储在用户/临时。我想做的是,在下载图像时,请检查临时文件夹,以查看是否已经有相同名称。如果有的话,请使用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' as the new name, with the drawback that there will be .bmp`。如果这对您来说是一个问题,那么您可以通过更多的工作,将基本名称和扩展名进行更好的工作,并使用基本名称以所需的格式格式化新名称。

最新更新