简介:本文实现了一个简单的将指定路径下的文件名都整理到excel表格之中,其中涉及:
- 文件操作
- Excel相关操作
- 将功能打包成自定义的Python包并调用
- 设计一个简单的界面实现交互
- 生成一个.exe应用文件
利用Python将指定路径下的文件名列入excel表格
import os
import openpyxl
def get_file_name(file_dir):
'''
获取指定目录下所有文件名称
:param file_dir:指定目录
:return:返回文件名列表
'''
for root, dirs, files in os.walk(file_dir):
# return root #当前目录路径,即输入的file_dir
# return dirs #当前路径下所有子目录(文件夹名称)
return files # 当前路径下的所有文件(不是文件夹,是带有后缀的文件名)
def class_file_name(file_dir, file_type):
'''
获取指定文件夹下的指定文件类型名称
:param file_dir:指定目录
:param file_type:
:return:返回文件名列表
'''
ls = []
f = []
for root, dirs, files in os.walk(
file_dir): # 直接return files只返输入目录下的文件,但是for file in files 加后面的append操作将输出输入目录下及子目录所有的文件
for file in files:
if os.path.splitext(file)[1] == file_type: # 分离文件名和扩展名
ls.append(os.path.join(root, file)) # 完整路径+文件名
f.append(file)
return f
def output2excelfunc(file_dir, *args):
'''
把文件夹下的文件名称输出到文件目录
:param file_dir: 文件目录
:return:
'''
# 如果只有路径没有其他参数,不分类型返回文件名
if len(args) == 0:
# 获取文件目录下所有文件名,存入data列表
data = get_file_name(file_dir)
elif len(args) == 1:
data = class_file_name(file_dir, args[0])
# 把data输出到该目录下,并以目录名保存为excel格式
wb = openpyxl.Workbook()
sheet = wb.active # 调用得到正在运行的工作表
# 设置表名为文件目录名
# sheet.title = 'sheet1' #默认就是sheet1
for i in range(1, len(data) + 1): # range函数从1开始,但不包括的后面的数
sheet['A{}'.format(i)] = data[i - 1]
if file_dir == '':
file_dir = '当前目录'
wb.save('{0}/{1}.xlsx'.format(file_dir, '所有文件'))
file_dir = 'D:\\'
output2excelfunc(file_dir)
示例
D盘文件如下:
运行之后生成excel表格
打开表格:
参考链接://www.greatytc.com/p/b32c6fdb0e50
自定义包并调用
将上面的代码自定义成包的步骤如下:
定义和调用自定义的包参考://www.greatytc.com/p/3bc924a8c7e5
界面交互
代码如下:
# 参考://www.greatytc.com/p/91844c5bca78
from tkinter import *
from tkinter import messagebox # 有了上一句为什么还要加这句,否则就出错?
from outputfile2excel import output2excel
# 设计一个回调函数调用文件整理功能
def file2excel():
file_dir = inpt_path.get()
file_type = inpt_type.get()
output2excel.output2excelfuc(file_dir, file_type)
messagebox.showinfo(title='消息', message='文件整理完毕!')
# 初始化窗体
root = Tk()
root.title('文件整理系统')
root.geometry('300x300')
# 设计界面
lb_path = Label(root, text='根目录路径:')
lb_path.place(relx=0.1, rely=0.2, relheight=0.1, relwidth=0.3)
inpt_path = Entry(root)
inpt_path.place(relx=0.4, rely=0.2, relheight=0.1, relwidth=0.5)
la_type = Label(root, text='文件类型(可选):')
la_type.place(relx=0.1, rely=0.5, relheight=0.1, relwidth=0.4)
inpt_type = Entry(root)
inpt_type.place(relx=0.5, rely=0.5, relheight=0.1, relwidth=0.4)
btn_ok = Button(root, text='确定', command=file2excel)
btn_ok.place(relx=0.6, rely=0.8, relheight=0.1, relwidth=0.3)
root.mainloop()
运行示意:
这个可以看做是文件搜索功能吧哈哈哈哈
生成.exe应用程序
首先安装 pyinstaller 包,然后在pycharm本工程下的Terminal界面输入 pyinstaller -F -w -i .\file.ico .\TKtest.py即可。记得在生成exe过程中把360等杀毒软件关掉。
生成结果:
双击出现和之前一样的界面,这样就可以不打开python 也可以用啦啦啦啦