我是编程的绝对初学者,所以如果这真的很基础,我深表歉意。我已经查看了其他似乎相关的问题,但还没有找到解决这个特定问题的方法——至少我无法理解。
我需要生成目录中的文件列表;为每个文件创建一个单独的目录,目录名称基于每个文件的名称;并将每个文件放在相应的目录中。
最佳答案
我已经为你写了一个例子。这将删除给定文件夹中每个文件的文件扩展名,创建一个新的子目录,并将文件移动到相应的文件夹中,即:
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/