• python文件操作


    功能:

    文件移动,文件拷贝,文件重命名 ,删除文件, 压缩文件

    import os
    import shutil
    import zipfile
    
    class MyFileHandle:
        def __init__(self):
            pass
    
        def movePath(self,src,dst):
            src = os.path.join(os.path.abspath("../%s"%src)) # 获取文件路径
            if os.path.isfile(dst):
                raise TypeError("dst path error")
                return -1
            if not os.path.exists(src):
                raise TypeError("src could not find src path %s" %src)
                return -1
            if os.path.isfile(src):
                fileName = os.path.basename(src) # 文件名字
                shutil.move(src,dst + '/' + fileName)
            else:
                shutil.move(src,dst) # 文件夹
    
        def copyPath(self, src, dst):
            if os.path.isfile(dst):  # 文件
                raise TypeError('plPath dst path error')
                return -1
            if not os.path.exists(dst):  # 不存在
                os.mkdir(dst)
    
            if not os.path.exists(src):  # 不存在资源文件
                raise TypeError('plPath could not find src path(%s)' % src)
                return -1
    
            if os.path.isfile(src):  # 资源文件是一个文件
                fileName = os.path.basename(src)
                shutil.copy(src, dst + '/' + fileName)
            else:
                shutil.copytree(src, dst)   # 拷贝文件夹
    
        def renameFile(self, srcName, newName):  # 重命名文件
            if not os.path.isfile(srcName):     # 判断文件是不是存在
                raise TypeError('plPath dst path error')
                return -1
            else:
                newPath = os.path.dirname(srcName) + '/' + newName  # 获取文件夹路径,
                shutil.move(srcName, newPath)
    
        def backupFile(self, srcFile, fixName, dstPath): # 备份文件
            if not os.path.isfile(srcFile):
                raise TypeError('plPath srcFile error')
                return -1
            if os.path.isfile(dstPath):  # 判断是不是文件
                raise TypeError('plPath dstPath error')
                return -2
            if not os.path.exists(dstPath):
                os.mkdir(dstPath)
    
            self.copyPath(srcFile, dstPath)  # 拷贝文件
            newFile = dstPath + '/' + os.path.basename(srcFile)
            newName = fixName + '_' + os.path.basename(srcFile)
            self.renameFile(newFile, newName)  # 重命名
    
        def deletePath(self, src):
            src = os.path.join(os.path.abspath("../%s" % src))
            if not os.path.exists(src):
                raise TypeError('plPath could not find this file(%s)' % src)
                return None
            if os.path.isfile(src):
                os.unlink(src)  # 删除文件
            else:
                shutil.rmtree(src)  # 递归删除目录树。
    
        def getPathFiles(self, srcPath):
            files = []
            srcPath = os.path.join(os.path.abspath("../%s" % srcPath))
            if os.path.isfile(srcPath):
                if os.path.exists(srcPath):
                    return [srcPath]
                else:
                    raise TypeError('plPath could not find this file(%s)' % srcPath)
                    return None
            else:
                if not os.path.exists(srcPath):
                    os.mkdir(srcPath)
                    raise TypeError('plPath could file in this path (%s)' % srcPath)
                    return None
                else:
                    dir_list = os.listdir(srcPath)
                    for file in dir_list:
                        path = os.path.join(srcPath,file)
                        if os.path.isfile(path):
                            print(file)
                            files.append(file)
    
                return files
    
        def getPathFilesByKey(self, srcPath, key):
            srcPath = os.path.join(os.path.abspath("../%s" % srcPath))
            files = []
            if os.path.isfile(srcPath):
                if os.path.exists(srcPath):
                    return [srcPath]
                else:
                    raise TypeError('plPath could not find this file(%s)' % srcPath)
                    return None
            else:
                if not os.path.exists(srcPath):
                    raise TypeError('plPath could file in this path (%s)' % srcPath)
                    return None
                else:
                    dir_list = os.listdir(srcPath)
                    for file in dir_list:
                        if key == 'olderFile':
                            file_List = file.split('.')
                            if len(file_List) == 3:
                                files.append(file)
                        else:
                            path = os.path.join(srcPath, file)
                            if os.path.isfile(path):
                                if file.find(key) >= 0:
                                    files.append(file)
                    return files
    
        def zipFile(self, srcPath, dstZipFile):  # 压缩文件  Zip文件压缩方法的常量
            '''
            :param srcPath: 文件夹或则文件
            :param dstZipFile:  目标文件
            :return: 
            '''
            f = zipfile.ZipFile(dstZipFile, 'w', zipfile.ZIP_DEFLATED)
            if os.path.isfile(srcPath):  # 如果是文件
                f.write(srcPath)
            else:
                for dirpath, dirnames, filenames in os.walk(srcPath): # 遍历文件夹
                    fpath = dirpath.replace(srcPath, '') #
                    fpath = fpath and fpath + os.sep or ''
                    for filename in filenames: # 将filename中的字节放入归档文件的名称下弧名
                        f.write(os.path.join(dirpath, filename), fpath + filename)
    
            f.close()
  • 相关阅读:
    LED点阵书写显示
    cpld fpga 区别
    SublimeText 自带格式化代码功能
    iText C# 合并PDF文件流,以及A5变A4时内容默认放在最底下的问题的解决方法;ASP.NET 实现Base64文件流下载PDF
    Adobe Acrobat 9 Pro序列号
    c#比较两个数组的差异
    iNotify.js通知JS 实现浏览器的 title 闪烁、滚动、声音提示、chrome、Firefox、Safari等系统通知。
    配置IISExpress允许外部访问
    https://sweetalert2.github.io/
    c# 利用MailKit.IMap 收取163邮件
  • 原文地址:https://www.cnblogs.com/countryboy666/p/14501651.html
Copyright © 2020-2023  润新知