在循环创建目录名称时捕获它

时间:2019-05-08 10:54:27

标签: python

我有一个带有文件夹名称的列表,我需要为其在当前位置创建目录并将文件复制到这些创建的目录中。因为需要将文件复制到正确的目录,所以我使用循环遍历列表中的每个文件夹名称,根据该文件夹名称创建目录,然后将文件复制到其中。基于列表中的元素创建目录不是问题。我的问题是如何在每次循环迭代中捕获那些创建的目录,以便在下一步复制文件时可以在路径中使用它。

这是我尝试过的:

dir = ['aaa','bbb')
for dir in dir_list:
    print os.mkdir(path)

在循环执行期间,已在当前工作目录中成功创建文件夹。但是我还需要获取其名称。我已打印出结果,显示os.mkdir返回“ None ”。如何在循环中获取创建的目录名称,而不是“ None ”对象?

1 个答案:

答案 0 :(得分:1)

如注释中所述,文件夹的名称是您传递到os.kdir()的路径。但是,您也可以在shutil的帮助下,在创建目录/文件夹之后直接将文件复制到文件夹中。可以像下面这样完成:

import os 
import shutil


root    = "root/"
folders = ['path_to_dir/dir1', 'path_to_dir/dir2', 'path_to_dir/dir3']
fnames  = ['path_to_file/file1','path_to_file/file2','path_to_file/file2']

for folder in folders:
    try: 
        os.makedir(root + folder)
    except: 
        print("Error creating folder: ", folder)

    for fname in fnames:
        try:
            src_path = root + fname
            dst_path = root + folder + "/" + fname.split("/")[-1]

            shutil.copyfile(src_path, dst_path)
        except:
            print("Couldn't copy file: ", fname)