将文件从多个目录移动到单个目录

时间:2015-05-17 18:33:56

标签: python python-3.x

我正在尝试使用os.walk()模块浏览多个目录,并将每个目录的内容移动到一个“文件夹”(dir)中。

在这个特定的例子中,我有数百个需要移动的.txt文件。我尝试使用shutil.move()os.rename(),但它没有用。

import os 
import shutil 

current_wkd = os.getcwd()
print(current_wkd)

# make sure that these directories exist

dir_src = current_wkd

dir_dst = '.../Merged/out'

for root, dir, files in os.walk(top=current_wkd):
    for file in files:
        if file.endswith(".txt"):  #match files that match this extension
            print(file)
            #need to move files (1.txt, 2.txt, etc) to 'dir_dst'
            #tried: shutil.move(file, dir_dst) = error

如果有办法移动目录的所有内容,我也会对如何做到这一点感兴趣。

非常感谢您的帮助!谢谢。

这是文件目录和内容

current_wk == ".../Merged 

current_wk中有:

 Dir1 
 Dir2 
 Dir3..
 combine.py # python script file to be executed 

在每个目录中有数百个.txt个文件。

2 个答案:

答案 0 :(得分:0)

需要简单的路径数学来精确查找源文件和目标文件。

import os
import shutil

src_dir = os.getcwd()
dst_dir = src_dir + " COMBINED"

for root, _, files in os.walk(current_cwd):
    for f in files:
        if f.endswith(".txt"):
            full_src_path = os.path.join(src_dir, root, f)
            full_dst_path = os.path.join(dst_dir, f)
            os.rename(full_src_path, full_dst_path)

答案 1 :(得分:0)

您必须准备源文件的完整路径,并确保dir_dst存在。

for root, dir, files in os.walk(top=current_wkd):
    for file in files:
        if file.endswith(".txt"):  #match files that match this extension
            shutil.move(os.path.join(root, file), dir_dst)