使用python从磁盘目录中检索文件,保存到其他文件夹中,并将代码生成可执行的exe文件。

场景描述:

  • 我需要D盘下所有的 txt 格式的文件,D盘当前目录和目录都可能包含该格式的文件,并且不同目录下的文件名可能相同。
  • 把检索出来的文件保存到一个自定义的文件夹中,并且保证检索到相同的文件名的文件也可以保存,而不是覆盖掉。

代码如下

import os
import shutil


def CreateDir(path):
    isExists=os.path.exists(path)
    # 判断结果
    if not isExists:
        # 如果不存在则创建目录
        os.makedirs(path)
        print(path+' 目录创建成功')
    else:
        # 如果目录存在则不创建,并提示目录已存在
        shutil.rmtree(path)
        os.makedirs(path)
        print("\n"+path+' 目录文件夹,已经重新创建成功')

def get_dir(path):              #获取目录路径
    for root,dirs,files in os.walk(path):     #遍历path,进入每个目录都调用visit函数,,有3个参数,root表示目录路径,dirs表示当前目录的目录名,files代表当前目录的文件名
        for dir in dirs:
            #print(dir)             #文件夹名
            print(os.path.join(root,dir))      #把目录和文件名合成一个路径

def get_file(oldPath,newPath,suffixName):
    CreateDir(newPath)      #创建文件夹
    num = 1#获取文件路径
    for root, dirs, files in os.walk(oldPath):

        for file in files:
            if file.endswith(suffixname):
                oldPathFile = os.path.join(root,file)       #被检索的文件
                newPathFile = os.path.join(newPath,file)    #需要保存到指定文件下的文件
                print(newPathFile)
                fileIsExist = os.path.exists(newPathFile)   #指定文件夹下,文件名称是否已经存在
                if fileIsExist:     #如果存在
                    repetPathFile = newPath+str(num) + file     #给这个文件名称加上一个编号
                    shutil.copyfile(oldPathFile,repetPathFile)  #然后复制到指定文件夹下
                    num +=1
                    print(oldPathFile)
                else:
                    shutil.copyfile(oldPathFile,newPathFile)    #不存在,直接把文件复制到指定文件夹下


def main():
    oldPath = input("使用说明:\n"
                    "    1.需要检索文件路径,从根目录开始写,路径填写错误检索不到预期结果;\n"
                    "    2.想要保存的文件路径,最好是新建的文件夹,如果是已经存在的文件夹,\n"
                    "执行该程序后会首先删除该文件夹,然后再创建。(一定注意,防止删除掉自己的文件);\n"
                    "    3.需要检索的文件名的后缀名,加入填写的是【.txt】,会检索出所有的【.txt】格式的文件,\n"
                    "保存到想要保存的文件路径中,如果检索出来的文件有相同的名称,保存时会在文件名的前面加上数字进行保存。\n\n"
                    "开始进行检索文件:\n"
                    "需要检索的文件路径如(D:\my_field\software\XMind):")
    newPath = input("需要保存的文件路径如(D:\\my_field\\temp1\\)注意路径最后有个斜杠:")
    suffixname = input("需要检索的文件后缀名如(.html):")

    if newPath.endswith("\\"):
        if oldPath+"\\" != newPath:
            get_file(oldPath,newPath,suffixname)
            input("\n检索完成,需要关闭的话点击回车,谢谢使用!")
        else:
            input("\n检索文件路径和想要保存的文件路径不能相同,请重启后,重新输入")
    else:
        input("\n失败!\n需要保存的文件路径输入的路径不正确,请检查格式和举例是否相同!    请重启后,重新输入")

if __name__ == '__main__':
    main()

生成.exe可执行文件

需要下载的库,pyinstaller 库

  • 下载命令:pip install pyinstaller

下载成功后,生成可执行文件命令为

  • pyinstaller -F scan_file.py

scan_file.py是需要执行的文件,-F 表示生成单个可执行文件,如果是多个需要执行的文件,需要使用-D命令。
pyinstaller参数作用

  • -F 表示生成单个可执行文件
  • -D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
  • -w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧
  • -c –console, –nowindowed 使用控制台,无界面(默认)
  • -p 表示你自己自定义需要加载的类路径,一般情况下用不到
  • -i 表示可执行文件的图标
  • 其他参数,可以通过pyinstaller --help查看

打包好的exe在dist目录下面,有一个xxx.exe文件。如下:

  • 看到successfully表示成功
    sd
  • 生成后文件如下。
    aaa
  • 进入dist文件夹
    asd

每次需要启动文件时,都需要进入这个目录,启动scan_file.exe文件,比较麻烦。

把打包好的所有文件,生成 .exe 文件

使用的压缩包文件时WINRAR

  • 选中所有文件进行解压
    qq
  • 右键选择 添加到压缩文件(A),然后选择“创建自解压格式压缩文件(X)”

as

  • 选择“高级”,然后点击(自解压选项(X)···)
    qwe

  • 点击设置,在【提取后运行】的输入框中输入解压文件后需要执行的文件,输入路径和文件名,如图所示。
    在这里插入图片描述

  • 选择【模式】,勾选(解包到临时文件夹),安静模式选择(全部隐藏)
    aa

  • 选择【更新】,覆盖方式选择(覆盖所有文件)
    eweq
    本节参考:https://www.jianshu.com/p/f5070154e0bc

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值