簡體   English   中英

如何使用文件的唯一名稱創建多個副本並將新副本放入Python中的多個文件夾中?

[英]How to create multiple copies with unique names of a file and put new copies into multiple folders in Python?

親愛的所有人,請幫助我闡明解決問題的思路。

在Python中, 我想編寫一個代碼,以生成具有單個文件唯一名稱(基於某些規則)的多個副本,並將所有新副本放入多個文件夾中。 我將展示一些圖片。

項目計划 我之前創建的所有結構。

現在,我想克隆文件“ tile.png”,並將其副本生成為“ 0.png”,“ 1.png”,然后強制執行。 這些名稱實際上基於規則png_file_names = [j for j in range(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))

它正在工作,但我不了解一件事。 當我刪除dirnames, files來自dirnames, files的前一個“ for語句” for dirpath, dirnames, files in os.walk(sub_subfolders_path):我相信我不需要這些部分),我確實有一個錯誤:

TypeError:chdir:路徑參數的非法類型

有人會這么友好地向我解釋發生了什么嗎? 謝謝

我也想知道是否可以簡化我的代碼。 謝謝你們)

還有另一個問題,如何對圖片上的文件夾進行排序? 謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM