Skip to main content
 首页 » 编程设计

python之如何将选定的文件移动到文件夹中

2025年05月04日12开发

此程序将文件夹中的每个文件分类到具有特定日期的新文件夹中。 大多数文件名都遵循这种模式:

20120509_1324654_house.jpg 
20120509_1324654_roof.jpg 

但也可能有一些文件是这样命名的:

20120509_cat.jpg 
20120509_cat.txt 
20120509_dog.jpg 
20120509_dog.txt 

这些是我想要放在文件夹“animals”中的文件,但我不知道如何编辑我的代码以便程序可以创建文件夹并将这些文件放在那里。

这是我目前所拥有的:

from zipfile import ZipFile 
import glob 
import datetime 
import os  
import re 
from collections import defaultdict 
from shutil import copyfile 
pat = r'(\d+)(?:_\d+)?_(\w+?)[\._].*' 
from collections import defaultdict 
 
src = 'D:/Testing/src/' 
 
or name in glob.glob('D:/Testing/src/*'):  
    print name 
 
dict_date = defaultdict(lambda : defaultdict(list)) 
for fil in os.listdir(src): 
    if os.path.isfile(os.path.join(src, fil)): 
        date, subFolder = re.match(pat, fil).groups() 
        dict_date[date][subFolder].append(fil) 
 
for date in dict_date: 
        for subFolder in dict_date[date]: 
            try: 
                os.makedirs(os.path.join(src, date, subFolder)) 
            except os.error: 
                pass 
            for fil in dict_date[date][subFolder]: 
                copyfile(os.path.join(src, fil), os.path.join(src, date, subFolder, fil)) 
 
for date in dict_date: 
    with ZipFile(os.path.join(src, '{0}.zip'.format(date)), 'w') as myzip: 
        for subFolder in dict_date[date]: 
            for fil in os.listdir(os.path.join(src, date, subFolder)): 
                if not fil.endswith('.zip'): 
                    myzip.write(os.path.join(src, date, subFolder, fil)) 
 
 
 
directory = src 
os.chdir(directory) 
files = glob.glob('*.txt') 
for filename in files: 
    os.unlink(filename) 
 
files2 = glob.glob('*.png') 
for filename in files2: 
    os.unlink(filename) 
 
print ("\n follows files are now in the folder \n") 
 
for name in glob.glob('D:/Testing/src/*'):   
    print name 

请您参考如下方法:

要创建文件夹,请使用 os.mkdir 例如创建一个名为 animals 的文件夹,使用 os.mkdir("animals")