如何使用文件的唯一名称创建多个副本,并将新副本放入Python中的多个文件夹中?
亲爱的各位,请帮助我澄清解决问题的思路 在Python中,我想编写一个代码,生成一个文件的多个具有唯一名称(基于某些规则)的副本,并将所有新副本放入多个文件夹。我将演示一些图片 我以前创建的所有结构 现在我想克隆文件“tile.png”,并生成其副本:“0.png”,“1.png”,等等。这些名称实际上是基于一个规则如何使用文件的唯一名称创建多个副本,并将新副本放入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”
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,我正在尝试执行一个代码,我需要用一个文件来尝试,稍后我会用一组不同的文件来尝试。