python: FileHelper

# encoding: utf-8
# 版权所有 2023 涂聚文有限公司
# 许可信息查看:
# 描述:
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2023.1 python 311
# Datetime  : 2023/7/9 19:12
# User      : geovindu
# Product   : PyCharm
# Project   : pythonTkinterDemo
# File      : FileLib.py
# explain   : 学习


import os
import sys
import shutil
from PIL import Image,ImageSequence
import glob
import pyzbar.pyzbar as p
import pyqrcode
import qrcode




class FileHelper(object):
    """
    简单的文件帮助
    """
    global cdir
    """
    计算文件夹的数量
    """
    global cfile
    """
    计算文件的数量
    """
    global allfiles
    """
    所有文件夹和文件
    """
    def __init__(self):
        """
        构造方法
        """
        self.__path=""
        self.cdir=1
        self.cfile=1
        self.allfiles=list()
    @property
    def Path(self):
        return self.__path

    @Path.setter
    def Path(self,path):
        self.__path=path

    def dirAllFile(self,pathname):
        """
        迭代遍历文件夹下的子文件夹和文件  iterate 迭代
        :param pathname: 所要遍历的文件夹的地址(root) 遍历相对的的根目录文件夹地址
        :return:返回最后一次遍历文件夹的文件
        """
        files = list()
        if os.path.exists(pathname):
            filelist = os.listdir(pathname)
            for f in filelist:
                f = os.path.join(pathname, f)
                if os.path.isdir(f):
                    self.cdir+=1
                    self.dirAllFile(f)
                else:
                    dirname = os.path.dirname(f)
                    baseName = os.path.basename(f)
                    if os.path.isfile(f):
                        files.append(f)
                        self.cfile+=1

        self.allfiles.append(files)
        return files #最后一次遍历的


    def traversalFiles(self):
        """
        只是当前文件夹下的,子文件夹的没有列出
        :return:
        """
        dirs=[]
        files=[]
        #global cdir=1
        #global cfile=1
        for item in os.scandir(self.__path):
            if item.is_dir():
                dirs.append(item.path)
                cdir+=1

            elif item.is_file():
                files.append(item.path)
                cfile+=1

        #traversalFiles(self)
        print('文件夹:')
        print('\n'.join(dirs))
        print('\n文件:')
        print('\n'.join(files))
        print(f"文件夹个数:{cdir},文件个数:{cfile}:")

    def displayFileLsit(self):
        """

        :return:
        """
        paths = os.walk(f'{self.__path}')
        cou = 0
        for path, dir_lst, file_lst in paths:
            for file_name in file_lst:
                print(os.path.join(path, file_name))
                cou += 1
        print("共有文件:", cou)



    # 创建文件方法
    def mkdirFile(self, writestring:str):
        """
        没有文件夹创建,把内容写入TEXT文本文件中
        :param folder: 文件夹名称
        :param writestring: 要写的内容
        :return: None
        """
        i = 1
        while True:
            # 判断是否文件存在,如果不存在则创建,存在则改名
            f_p_intact = self.__path + "\\geovindu" + str(i) + ".txt"
            # 打印完整文件名称
            print("已创建的文件是:",f_p_intact)
            if not os.path.exists(f_p_intact):
                # 文件的写操作
                f = open(f_p_intact, "w+",encoding='utf8')
                f.write(writestring)
                # 关闭文件流
                f.close()
                break
            else:
                i += 1

    def makeGif(self,framefolder):
        """
        生成GIF动画图片
        :param framefolder: 文件夹
        :return:
        """

        images = glob.glob(f"{self.__path}/*.png")
        images.sort()
        frames = [Image.open(image) for image in images]
        frame_one = frames[0]
        print(frame_one)
        frame_one.save(framefolder+"/geovindu.gif", format="gif", append_images=frames,
                       save_all=True, duration=50, loop=0)

    def generateQrCode(self,qrcodestr:str,qrcodefile:str):
        """
        生成二维码
        :param qrcodestr:  二要生成的二给码字符
        :param qrcodefile: 生成的文件名
        :return:
        """
        img = qrcode.make(qrcodestr)
        type(img)
        img.save(f'{qrcodefile}.png')

    def readQrCode(self,qrcodefile:str):
        """
        读二维码
        :param qrcodefile: 二维码文件名
        :return: 返回二维码内容
        """
        nowpath = os.getcwd()
        scrimg=Image.open(f"{nowpath}\{qrcodefile}.png")
        m=p.decode(scrimg)
        codedata=m[0].data.decode("utf-8")
        return codedata

调用:

  nowpath = os.getcwd()
    f=Common.FileLib.FileHelper()
    f.Path=nowpath
    #f.displayFileLsit()
    #f.traversalFiles()
    files=f.dirAllFile(nowpath)
    allf=f.allfiles
    print(len(allf))
    for ff in allf:
        for df in ff:
            if not df==[]:
                print(df)
    print(f"文件夹数量:{f.cdir}  文件数量:{f.cfile}")
    nowpath = os.getcwd() #当前项目文件夹
    generateQrCode("http://www.dusystem.com","geovindu")
    codedata=readQrCode("geovindu")
    print("qrcode:",codedata)

输出:

python: FileHelper_第1张图片

 python: FileHelper_第2张图片

你可能感兴趣的:(Python,python,开发语言)