1.用PySimpleGUI 做一个可视化窗口(用于批量生成文件夹名称);
2.窗口可以选择对应的文件路径存放所生成的文件夹, 选择指定路径下的excel;
3.选择要生成文件夹名称的excel的某一列的内容,读取该列行数总数并显示;
4.输入要生成的文件夹的名称的分别是从某一列中的第几行到第几行;
5.点击文件夹生成, 存放所生成的文件夹发生任何报错都会显示在可视化窗口内;
当前上传的版本是不带以下命名规则的, 所以在出现指定行内有空格时,遇到第二个空格,后面的所有内容将无法继续生成文件夹名称,
解决方案1: 清除所有空格行,容易改变数据(不建议);
import PySimpleGUI as sg
import os
import pandas as pd
# 定义窗口布局
layout = [
[sg.Text('选择文件路径:'), sg.Input(key='path'), sg.FolderBrowse()],
[sg.Text('选择Excel文件:'), sg.Input(key='file'), sg.FileBrowse(file_types=(("Excel Files", "*.xlsx"),))],
[sg.Text('选择列:'), sg.Input(key='col')],
[sg.Button('读取列内容')],
[sg.Text('行数:'), sg.Text('', key='rows')],
[sg.Text('生成文件夹名称:从第'), sg.Input(key='start', size=(5, 1)), sg.Text('行到第'), sg.Input(key='end', size=(5, 1)), sg.Button('生成文件夹')],
[sg.Output(size=(60, 10))],
[sg.Button('退出')]
]
# 创建窗口
window = sg.Window('APP_004_批量生成文件夹名称_V01 ---AUTHOR: DIETER ', layout)
# 事件循环
while True:
event, values = window.read()
if event == sg.WIN_CLOSED or event == '退出':
break
if event == '读取列内容':
try:
df = pd.read_excel(values['file'])
col = int(values['col']) - 1
rows = len(df.iloc[:, col])
window['rows'].update(rows)
except Exception as e:
print(e)
if event == '生成文件夹':
try:
path = values['path']
start = int(values['start']) - 1
end = int(values['end'])
df = pd.read_excel(values['file'])
col = int(values['col']) - 1
for i in range(start, end):
folder_name = str(df.iloc[i, col])
os.makedirs(os.path.join(path, folder_name))
print('文件夹生成成功!')
except Exception as e:
print(e)
# 关闭窗口
window.close()
解决方案2:
1.如果指定行内有出现空格,自动命名为NA_x, x为第几个空格;
2.如果有出现重复的名称,自动命名加后缀n,n是代表重复的次数;
解决方案2 我已经制作成了APP,并且基于此代码做了升级和更新, 没有python的电脑上面都可以操作,小程序
价格:8RMB/个(通用型),需要的留言。;
非通用型价格另算,可做数据定制处理等脚本开发,需要的留言。