根据文件名创建目录

时间:2014-04-23 21:53:47

标签: python filenames directory

我是编程的绝对初学者所以我很抱歉这是非常基本的。我看过其他似乎有关的问题,但没有找到解决这个问题的方法 - 至少不是我能理解的。

我需要在目录中生成一个文件列表;为每个文件创建一个单独的目录,目录名称基于每个文件的名称;并将每个文件放在相应的目录中。

2 个答案:

答案 0 :(得分:6)

您应该查看globosshutil库。

我为你写了一个例子。这将删除给定文件夹中每个文件的文件扩展名,创建一个新的子目录,并将文件移动到相应的文件夹中,即:

C:\Test\
 -> test1.txt
 -> test2.txt

将成为

C:\Test\
 -> test1\
    -> test1.txt
 -> test2\
    -> test2.txt

<强>代码:

import glob, os, shutil

folder = 'C:/Test/'

for file_path in glob.glob(os.path.join(folder, '*.*')):
    new_dir = file_path.rsplit('.', 1)[0]
    os.mkdir(os.path.join(folder, new_dir))
    shutil.move(file_path, os.path.join(new_dir, os.path.basename(file_path)))

如果文件夹已存在,则会抛出错误。为避免这种情况,请处理异常:

import glob, os, shutil

folder = 'C:/Test/'

for file_path in glob.glob(os.path.join(folder, '*.*')):
    new_dir = file_path.rsplit('.', 1)[0]
    try:
        os.mkdir(os.path.join(folder, new_dir))
    except WindowsError:
        # Handle the case where the target dir already exist.
        pass
    shutil.move(file_path, os.path.join(new_dir, os.path.basename(file_path)))

PS:这对没有扩展名的文件不起作用。考虑为这种情况使用更强大的代码。

答案 1 :(得分:3)

以下是listing files using Python的一些建议。

要创建目录,请使用os.mkdirdocs)。要移动文件,请使用os.renamedocs)或shutil.movedocs)。