繁体   English   中英

如何将所选文件移动到文件夹中?

[英]How can I move selected files into a folder?

该程序将文件夹中的每个文件分类为带有特定日期的新文件夹。 大多数文件名遵循以下模式:

20120509_1324654_house.jpg
20120509_1324654_roof.jpg

但是也可能有一些文件的名称如下:

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

这些是我希望放在“动物”文件夹中的文件,但是我不知道如何编辑代码,以便程序可以创建该文件夹并将这些文件放在其中。

这是我到目前为止所拥有的:

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例如,要创建一个名为animal的文件夹,请使用os.mkdir("animals")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM