场景描述:
- 我需要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
表示成功 - 生成后文件如下。
- 进入dist文件夹
每次需要启动文件时,都需要进入这个目录,启动scan_file.exe文件,比较麻烦。
把打包好的所有文件,生成 .exe 文件
使用的压缩包文件时WINRAR
- 选中所有文件进行解压
- 右键选择 添加到压缩文件(A),然后选择“创建自解压格式压缩文件(X)”
- 选择“高级”,然后点击(自解压选项(X)···)
- 点击设置,在【提取后运行】的输入框中输入解压文件后需要执行的文件,输入路径和文件名,如图所示。
- 选择【模式】,勾选(解包到临时文件夹),安静模式选择(全部隐藏)
- 选择【更新】,覆盖方式选择(覆盖所有文件)
- 本节参考:https://www.jianshu.com/p/f5070154e0bc