python: FileHelper

2023-11-09

# 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)

输出:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python: FileHelper 的相关文章

  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • Python 函数可以从作用域之外赋予新属性吗?

    我不知道你可以这样做 def tom print tom s locals locals def dick z print z name z name z guest Harry print z guest z guest print di
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • 前端笔试题

    目录 1 选择器的优先级 从上往下依次降低 是 2 下述有关 border none 以及 border 0 的区别 描述错误的是 3 关于a元素 以下说法正确的有 4 History对象的属性或方法描述正确的是 5 在HTML5中 为in
  • Matlab中的点数据生成图

    目录 简单的背景介绍 尝试plot3 构造矩阵 遍历填充 无优化版遍历填充 优化后的遍历填充 简单的背景介绍 今天蠢师弟用comsol导出了一个模拟数据 用matlab打开一看是一个数据长度 189739 3 189739 3 189739
  • 嵌入式物联网毕业设计选题智能图像识别项目-stm32mp157 linux开发板

    stm32mp157开发板FS MP1A是华清远见自主研发的一款高品质 高性价比的Linux 单片机二合一的嵌入式教学级开发板 开发板搭载ST的STM32MP157高性能微处理器 集成2个Cortex A7核和1个Cortex M4 核 A
  • R语言第八次课堂小测 rattle的应用(包括rattle的安装)

    题目 安装rattle 并使用rattle 用三种聚类方法对鸢尾花数据集进行聚类 步骤一 修改镜像源 首先 在Rstudio上打开如下界面 进入后 找到packages 再点击change 下图是已经更换了的截图 选择中国的任意一个镜像 最
  • ./configure之后报错

    首先要看报的错误是什么 一般从第一条开始解决 因为有可能下面的错误是由上面的导致的
  • js 判断变量类型(完整版),包括ES6 新类型Symbol

    欢迎来到Altaba的博客 相信大家在开发中遇到需要判断变量类型的问题 js变量按存储类型可分为值类型和引用类型 值类型包括Undefined String Number Boolean 引用类型包括object Array Functio
  • 股票和期货的区别(股指期货1个点赚多少钱)

    股票和期货的辨别 股票的最后含意即是说不妨表明你购置了这家公司的股子 而期货 则是买卖两边按照各自对目标物的将来价钱预期 以此刻的价钱签署的合约 观念既是仍旧领会了 那咱们就再领会一下这几个的辨别 1 目标物 目标物也即是买卖东西 菜商场里
  • 【深度学习】SETR:基于视觉 Transformer 的语义分割模型

    Visual Transformer Author louwill Machine Learning Lab 自从Transformer在视觉领域大火之后 一系列下游视觉任务应用研究也随之多了起来 基于视觉Transformer的语义分割正
  • OpenMMLab AI实战营第二期(2)MMPose初体验

    根据MMPose的官方文档学习一下 MMPose文档地址 https mmpose readthedocs io zh CN latest index html 文章目录 1 概述 2 安装 2 1 创建conda环境并激活 2 2 安装p
  • mysql锁

    想要了解锁 必须要知道mysql事务 以及mysql事务产生的并发问题 数据库中的事务 隔离级别 以及数据展示 華同学 的博客 CSDN博客 1 Mysql锁的介绍 锁是计算机协调多个线程或进程并发访问某一资源的机制 除传统的计算机资源 C
  • sentencepiece原理与实践

    1 前言 前段时间在看到XLNET Transformer XL等预训练模式时 看到源代码都用到sentencepiece模型 当时不清楚 经过这段时间实践和应用 觉得这个方法和工具值得NLP领域推广和应用 今天就分享下sentencepi
  • Vscode + php + xdebug 单步调试

    1 确认xdebug已打开 php ini xdebug remote enable 1 xdebug remote autostart 1 xdebug remote host localhost xdebug remote port 9
  • win32汇编基础概念

    一 关于寄存器 寄存器有EAX EBX ECX EDX EDI ESI ESP EBP等 似乎IP也是寄存器 但只有在CALL RET在中会默认使用它 其它情况很少使用到 暂时可以不用理会 EAX是WIN32 API 默认的返回值存放处 E
  • 深入理解机器学习与极大似然之间的联系

    似然函数 事件A的发生含着有许多其它事件的发生 所以我就把这些其它事件发生的联合概率来作为事件A的概率 也就是似然函数 数据类型的不同 离散型和连续性 就有不同的似然函数 极大似然极大似然估计方法 Maximum Likelihood Es
  • sqli-labs:less-27(过滤select和union)

    div div
  • eosjs v20 如何通过jsonrpc连接到主网节点

    用eosjs连接主网节点很简单 只需要在创建JsonRpc对象时 指定要连接主网节点的地址 就可以了 例如 下面的代码将创建一个使用eosnewyork io节点RPC旳JsonRpc 对象 然后使用get info 方法获取网络总体信息
  • 拆分Nim游戏

    拆分Nim游戏 给定n堆石子 两位玩家轮流操作 每次操作可以取走其中的一堆石子 然后放入两堆规模更小的石子 新堆规模可以为0 且两个新堆的石子总数可以大于取走的那堆石子数 最后无法进行操作的人视为失败 问如果两人都采用最优策略 先手是否必胜
  • 顺序主子式

    设有矩阵 a b c d e f g h i 则 一阶顺序主子式 a 二阶顺序主子式 a b d e 三阶顺序主子式 a b c d e f g h i 若n阶方阵A的顺序主子式均 0 则A的LU分解A LU存在且唯一 转载于 https
  • 微软Xbox One无线手柄控制机器人

    ROS中的joy包提供了游戏手柄的驱动 并且包含joy node节点 这一节点可以发布包含手柄按钮和轴信息的Joy消息 在终端中输入下面命令 安装joy包 sudo apt get install ros kinetic joy Confi
  • python: FileHelper

    encoding utf 8 版权所有 2023 涂聚文有限公司 许可信息查看 描述 Author geovindu Geovin Du 涂聚文 IDE PyCharm 2023 1 python 311 Datetime 2023 7 9