如何使用文件的唯一名称创建多个副本,并将新副本放入Python中的多个文件夹中?

如何使用文件的唯一名称创建多个副本,并将新副本放入Python中的多个文件夹中?,python,file-rename,file-copying,Python,File Rename,File Copying,亲爱的各位,请帮助我澄清解决问题的思路 在Python中,我想编写一个代码,生成一个文件的多个具有唯一名称(基于某些规则)的副本,并将所有新副本放入多个文件夹。我将演示一些图片 我以前创建的所有结构 现在我想克隆文件“tile.png”,并生成其副本:“0.png”,“1.png”,等等。这些名称实际上是基于一个规则png\u file\u name=[j代表范围内的j(0,2**zoom)]。在我有了一个文件“tile.png”和新名称的确切数量后,我想将它们全部复制到每个子文件夹中:“0”

亲爱的各位,请帮助我澄清解决问题的思路

在Python中,我想编写一个代码,生成一个文件的多个具有唯一名称(基于某些规则)的副本,并将所有新副本放入多个文件夹。我将演示一些图片

我以前创建的所有结构

现在我想克隆文件“tile.png”,并生成其副本:“0.png”,“1.png”,等等。这些名称实际上是基于一个规则
png\u file\u name=[j代表范围内的j(0,2**zoom)]
。在我有了一个文件“tile.png”和新名称的确切数量后,我想将它们全部复制到每个子文件夹中:“0”、“1”、“2”、“3”,您可以在我的三个文件夹中看到它们

据我所知,我需要应用几个循环。谢谢大家!!这是我目前拥有的代码:

def create_copies_of_a_tile (zoom):
    path_to_the_project = 'D:/ms_project'
    os.chdir(path_to_the_project)
    for j in range (0, 2**zoom):
        shutil.copy2('tile.png', '{}.png'.format(j))

此脚本将文件复制到名为0,1,2的子目录。。。创建子目录后:

import shutil, os

def copytoSub(filename, zoom):
    extension = os.path.splitext(filename)[-1]

    for i in range (0, 2**zoom):
        i = str(i)
        newfile = i + extension
        os.mkdir(i)                                     # make i named subdir
        shutil.copy2(filename, i + os.sep + newfile)   # copy i named file to i named subdir

if __name__ == '__main__':
    copytoSub("copy.py", 3)

*注意:我不认为您需要当前工作目录中原始文件的复制文件,因为原始文件tile.png已经存在,我假设您只需要在子目录中复制它。

经过一些尝试执行后,我找到了解决方案:

def create_copies_of_a_tile (zoom):
    path = 'D:/ms_project/tiles/'
    for zoom_level in range (zoom_min, zoom + 1):
        subfolders_path = os.path.join(path, str(zoom_level))
        for xtile_number in range(0, 2 ** zoom):
            sub_subfolders_path = os.path.join(subfolders_path, str(xtile_number))
            for dirpath, dirnames, files in os.walk(sub_subfolders_path):
                os.chdir(dirpath)
                for j in range(0, 2 ** zoom):
                    shutil.copy2('D:/ms_project/tile.png', '{}.png'.format(j))
它正在工作,但我不明白一件事。当我从os.walk(sub_subfolders_path)中的最后一个“for语句”
中删除dirpath、dirnames和文件时:
(我相信我不需要这些部分),我确实有一个错误:

TypeError:chdir:路径参数的类型非法

有人能这么好心地向我解释一下发生了什么事吗?多谢各位

我还想知道是否有可能简化我的代码。谢谢大家)


还有一个问题,如何对图片上的文件夹进行排序?谢谢

StackOverflow不是一种代码编写服务。让我们看看你做了什么。是的,当然!谢谢你的提示。为什么要在一个目录中创建多个副本,然后将它们移动到其他目录?直接复制到这些目录会更简单。@Błotosmętek,我正在尝试执行一个代码,我需要用一个文件来尝试,稍后我会用一组不同的文件来尝试。