python: FileHelper

news2024/9/23 9:29:40
# 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)

输出:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/739577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT事件处理

设计一个闹钟&#xff0c;定时播报内容。 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QTimerEvent> #include <QDateTime> #include <QMessageBox> #include <QTextToSpeech> #include <QDebug> namespa…

校园闲置物品交易平台的设计与实现(论文+源码)_kaic

摘 要 伴随大数据时代的到来&#xff0c;计算机已成为人们步入个数化生活的必须品。由于计算机技术的成熟&#xff0c;互联网的强大功能也正在被人们以最大限度的开发。通过网络&#xff0c;人们能够足不出户完成校园闲置物品查阅&#xff0c;这在方便学生的同时也解决了在传统…

用于FPGA远程更新的QuickBoot方法

用于FPGA远程更新的QuickBoot方法 用于FPGA远程更新的QuickBoot方法 用于FPGA远程更新的QuickBoot方法1. 远程更新简介2 QuickBoot方案2.1 QuickBoot配置方法2.2 QuickBoot Flash 编程方法 3.QuickBoot实现3.1 Critical Switch World (key point)3.2 QuickBoot存储映射3.3 Bits…

Django ORM中QuerySet常用接口汇总记录

存在模型数据 学生表 课程表 支持链式操作的接口 all接口&#xff1a;用于查询所有数据&#xff0c;相当于&#xff1a;select * from xxx filter接口&#xff1a;根据条件过滤数据 values接口&#xff1a;指定返回的字段&#xff0c;结果是包含 dict 的 QuerySet 对象 valu…

zabbix----代理服务器,高可用集群

文章目录 一、部署 zabbix 代理服务器1.1 设置 zabbix 的下载源&#xff0c;安装 zabbix-proxy1.2 部署数据库&#xff0c;要求 MySQL 5.7 或 Mariadb 10.5 及以上版本1.3修改 zabbix-proxy 配置文件1.4 启动 zabbix-proxy1.5 在所有主机上配置 hosts 解析1.6 在 Web 页面配置 …

Oracle批量生成供datax调用的json文件及可执行sh脚本

Oracle+DataX+存储过程实现异构库之间的数据同步资源-CSDN文库 背景: 项目需要做数据迁移(hive2oceanbase),两边的库有几百张表,人工生成json文件,工作量巨大,想来想去还是用Oracle存储过程的形式,批量生成json文件和shell脚本,及实现跑批的功能。 本次测试是Oracl…

免费插画网站

humaaans undraw iradesign fresh-folk delesign

MYSQL的体系结构

mysql体系结构可以分为四个层级&#xff1a;连接层&#xff0c;SQL层&#xff0c;插件存储引擎&#xff0c;物理文件层 补充&#xff1a; SQL层中&#xff1a; 管理服务和工具组件&#xff1a;从备份和恢复的安全性、复制、集群、管理、配置、迁移和元数据等方面管理数据库。…

开发环境可运行,发包后报错(nginx代理出现了问题)

场景&#xff1a; vue项目首次发包... 后端服务发包完毕&#xff0c;apifox测试接口没问题、前端开发环境连服务也没问题... 前端项目打包,提前配置nginx&#xff0c;前端发包... 打开网页&#xff0c;登录接口正常&#xff0c;登录后其他接口报错... 查看报错信息&#xff1a;…

Unity 编辑器-查找所有未被使用的Prefab

需求 接到一个需求&#xff0c;将Res里所有特效相关的prefab检查一下&#xff0c;没有使用的移除。 分析 先拆解一下需求&#xff0c;如下 #mermaid-svg-YiTzyE1BvQ0ZTgLj {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#merm…

docke安装elasticsearch(ES)

docke安装elasticsearch&#xff08;ES&#xff09; 1.安装一个不带数据卷映射的ES docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" elasticsearch:7.6.22.创建es数据卷映射目录 mkdir -p data/elasticsearch3.将…

瑞芯微 RK356x 基于Android11移植usb接口rtl8723du wifi和蓝牙一体化

开发环境 平台: 瑞芯微RK356x 操作系统&#xff1a;Android11 WiFi、蓝牙芯片:RTL8723DU 通讯类型&#xff1a;USB协议 RTL8723du介绍 Realtek RTL8723DU是一个高度集成的单片机802.11b/g/n 1T1R WLAN&#xff0c;和一个集成的蓝牙2.1/4.2单片机&#xff0c;USB 2.0多功能。…

谈谈电机的FOC控制算法的特点以及应用场景

电机的FOC&#xff08;Field-Oriented Control&#xff09;控制算法是一种常用的电机控制策略。它的特点是将电机的控制分为两个部分&#xff1a;电流控制和转速控制。 首先&#xff0c;电流控制是FOC算法的关键部分。它通过控制电机的电流来实现对电机的力矩控制。具体来说&am…

maven引入jar包报红

maven引入jar包报红 1、检查自己的maven配置有无问题 2、检查是否没有子项目使用到当前引入的jar包&#xff0c;在根目录下引入的jar包如果没有子项目使用会报红&#xff0c;原因是在根目录下只是声明式引用&#xff0c;并没有实际引用到。 解决办法&#xff1a;找到要使用的子…

Leetcode-每日一题【1721.交换链表中的节点】

题目 给你链表的头节点 head 和一个整数 k 。 交换 链表正数第 k 个节点和倒数第 k 个节点的值后&#xff0c;返回链表的头节点&#xff08;链表 从 1 开始索引&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2输出&#xff1a;[1,4,3,2,5] 示例 …

816. 数组翻转

链接&#xff1a; 链接 题目&#xff1a; 给定一个长度为 nn 的数组 aa 和一个整数 sizesize&#xff0c;请你编写一个函数&#xff0c;void reverse(int a[], int size)&#xff0c;实现将数组 aa 中的前 sizesize 个数翻转。 输出翻转后的数组 aa。 输入格式 第一行包含两个整…

高德地图通过图层layer实现对海量点的可视化渲染

一、可视化海量点应用场景 在正文开始之前我先说说我为啥会使用这个技术来实现数据的可视化。 事情是这样的&#xff0c;我接手了一个项目&#xff0c;里面有个需求是在地图上标记出他们公司的产品的使用分布。我接手的时候呢&#xff0c;我前面的那位大哥是使用marker点覆盖物…

Spark(19):SparkSQL中数据的加载和保存

目录 0. 相关文章链接 1. 通用的加载和保存方式 1.1. 加载数据 1.2. 保存数据 2. Parquet 2.1. 加载数据 2.2. 保存数据 3. JSON 4. CSV 5. MySQL 5.1. 导入依赖 5.2. 读取数据 5.3. 写入数据 6. Hive 6.1. SparkSQL连接Hive 6.2. 内嵌的 HIVE 6.3. 外部的 HI…

FastDFS文件系统

FastDFS文件系统 环境代码实现 一.FastDFS 1.什么是FastDFS FastDFS:Fast Distributed File System,快速的分布式文件系统,是一款用c语言开发的开源的分布式文件系统. FastDFS 是用 c 语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制&#xff0c;充分考虑了…

前端漏洞xss

网络钓鱼、获取Cookie、强制弹窗获取流量、网站挂马(将恶意代码嵌入程序&#xff0c;用户浏览页面时计算机将被嵌入木马)、发送垃圾信息或广告、传播蠕虫病毒 漏洞原理 XSS(Cross Site Scripting),是一种跨站的脚本攻击&#xff0c;曾简称为CSS&#xff0c; 后改为XSS。 攻击…