python - 根据文件名创建目录

标签 python filenames directory

我是编程的绝对初学者,所以如果这真的很基础,我深表歉意。我已经查看了其他似乎相关的问题,但还没有找到解决这个特定问题的方法——至少我无法理解。

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

最佳答案

你应该看看 glob , osshutil图书馆。

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

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:这不适用于没有扩展名的文件。考虑对此类情况使用更强大的代码。

关于python - 根据文件名创建目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23255928/

相关文章:

php - 当仅为用户创建用户时,如何创建新文件夹

python - 奇怪的 .txt 报告到 Pandas 数据框中

ms-word - 重命名 Word 文档并使用前 10 个字母保存其文件名

windows - 拆分路径并在批处理脚本中获取最后一个文件夹名称

Linux Shell 脚本 - 如何获取参数 $n 的上层目录

bash - 正确处理文件名中带有空格的文件列表

Python-MySQLdb,如何访问 `OperationalError` 中的异常错误代码?

python - Python 应用程序的简单许可证保护

python - 4D numpy 数组上的矩阵乘法

windows - 在 Windows 共享上强制执行文件命名约定?