鱼C论坛

 找回密码
 立即注册
查看: 1546|回复: 4

[已解决]想写一个把一堆文件分成每20个文件新开一个文件夹存起来

[复制链接]
发表于 2018-1-30 16:46:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码如下:

import os
import time as t
import shutil as stl


class Filesort:
    def __init__(self ,path):
        self.path = path
        self.list_of_path = os.listdir(path)
        self.result = {}
        self.__checklist() #去掉目录中的文件夹

    def __pathlink(self,filename):
        return self.path + os.sep + filename

    def __checklist(self):
        check = []
        for each in self.list_of_path:
            if os.path.isdir(self.__pathlink(each)):#去掉目录中的文件夹
                check.append(each)
        for each in check:
            self.list_of_path.remove(each)

    def __getfiletime(self, filename):
        file_info = os.stat(self.__pathlink(filename))  # 合并目录与文件的路径并查看信息
        time_of_file = t.localtime(file_info.st_ctime())  # localtime用来转化时间,st_ctime是查看文件创建时间
        return time_of_file

    def sortfile(self):
        print("正在将文件分片")
        count = 0
        templist = []
        for each in self.list_of_file:
            templist.append(each)
            if count % 20 == 0 or each == self.list_of_path[len(self.list_of_path)-1]:#or 后边是表示文件列表的结束
                time_of_file = self.__getfiletime(each)
                the_dir_name = str(time_of_file[0:3])
                self.result.update({the_dir_name: templist})
                templist = []
            count += 1
        print("有%d个文件即将接受处理。。。" % count)

    def makenewdir(self):
        print("正在处理文件。。。")
        for each in self.result.keys():
            os.mkdir(self.__pathlink(each))#创建目录
            for eachfile in self.result[each]:#复制文件
                stl.copy(self.__pathlink(eachfile),self.__pathlink(each+os.sep+eachfile))
        print("处理完成")


path_of_file = 'F:\\手机照片'
sortdemo = Filesort(path_of_file)
sortdemo.sortfile()
sortdemo.makenewdir()


报错是这个 0.png

刚开始学python,望指正,谢谢
最佳答案
2018-1-30 16:48:47
有list of path没list of file,for循环把电脑搞蒙了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-1-30 16:48:47 | 显示全部楼层    本楼为最佳答案   
有list of path没list of file,for循环把电脑搞蒙了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-30 16:51:21 | 显示全部楼层
报错信息提示你没有这个属性
self.list_of_file

看你的代码,应该是self.list_of_path
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-30 16:52:33 | 显示全部楼层
塔利班 发表于 2018-1-30 16:48
有list of path没list of file,for循环把电脑搞蒙了

...我自己把自己给搞懵了,谢谢(啥时候写的file都忘了)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-30 16:54:35 | 显示全部楼层
BngThea 发表于 2018-1-30 16:51
报错信息提示你没有这个属性
self.list_of_file

我调试的时候跟着走也没看出来file和path的区别,谢谢指正
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-6 14:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表