我是编程的绝对初学者所以我很抱歉这是非常基本的。我看过其他似乎有关的问题,但没有找到解决这个问题的方法 - 至少不是我能理解的。
我需要在目录中生成一个文件列表;为每个文件创建一个单独的目录,目录名称基于每个文件的名称;并将每个文件放在相应的目录中。
答案 0 :(得分:6)
我为你写了一个例子。这将删除给定文件夹中每个文件的文件扩展名,创建一个新的子目录,并将文件移动到相应的文件夹中,即:
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.mkdir
(docs)。要移动文件,请使用os.rename
(docs)或shutil.move
(docs)。