簡體   English   中英

如何將目錄中子文件夾中的文件移動到python中的另一個目錄?

[英]How do I move files within a subfolder in a directory to another directory in python?

import os
import shutil
source_dir = r'C:\\Users\\Andre\\Downloads'
image_dir = r'C:\\Users\\Andre\\Downloads\\images'

file_names = os.listdir(source_dir)
    
for file_name in file_names:
    if '.png' in file_name:
        shutil.move(os.path.join(source_dir, file_name), image_dir)

此當前代碼會將所有pngs從源目錄移動到圖像目錄,我如何才能使其還包括嵌套在源目錄內另一個子目錄中的pngs 例如C:\\Users\\Andre\\Downloads\\pictures

您可以將移動功能分解為一個函數,然后在每個目錄上調用該函數。

def move_pngs(src, dst):
    for file_name in os.listdir(src):
        if file_name.endswith('.png'):
            shutil.move(os.path.join(src, file_name), dst)

move_pngs(source_dir, image_dir)
move_pngs(os.path.join(source_dir, 'pictures'), image_dir)

...或者也許完全遞歸。

def move_pngs(src, dst):
    for file_name in os.listdir(src):
        fullname = os.path.join(src, file_name)
        if os.path.isdir(fullname) and fullname != dst:
            move_pngs(fullname, dst)
        elif file_name.endswith('.png'):
            shutil.move(fullname), dst)

這將遞歸訪問所有子目錄,並將所有文件移動到一個平面目錄中,這意味着如果任何地方都有同名的文件,通常來自更深子目錄的一個將獲勝,而其他的將被覆蓋。

您可以簡單地更改source_dir以包含要從中移動pngs的子目錄,然后再次運行循環。
在這種情況下:

subdirectory = '\pictures'
source_dir += subdirectory 

file_names = os.listdir(source_dir)    
for file_name in file_names:
    if '.png' in file_name:
        shutil.move(os.path.join(source_dir, file_name), image_dir)

暫無
暫無

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

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