通过表格移动图片
这次的界面语言相较于上一次进行了一些优化
第一次使用python写界面的时候,总是先入为主的认为,想要连接两段代码或者是连接两个功能,一定要先将输入的内容等于一个变量再去使用,其实可以直接使用.get去进行传值,更方便且不会有变量类型错误等问题的出现。
def show():
print('图片地址:%s' % entry1.get())
print('表格地址:%s' % entry2.get())
print('文件储存地址:%s' % entry3.get())
-------------------------------------------------------------
def print_name():
s = e.get('1.0','5.5')
path = s.strip()
print(path)
def print_name1():
ss = e1.get('1.0','5.5')
path2 = ss.strip()+'.xlsx'
print(path2)
本次与上一次的代码区别,输入内容直接获取然后使用,没有用变量做中转,后续直接调用.get即可。
```python
import tkinter as tk
import xlrd
import os
import shutil
import datetime
import xlwt
starttime=datetime.datetime.now()
root = tk.Tk()
root.title('图片移动工具')
# 设置标签信息
label1 = tk.Label(root, text='图片地址:')
label1.grid(row=0, column=0)
label2 = tk.Label(root, text='表格地址:')
label2.grid(row=1, column=0)
label3 = tk.Label(root, text='文件储存地址:')
label3.grid(row=2, column=0)
# 创建输入框
entry1 = tk.Entry(root)
entry1.grid(row=0, column=1, padx=10, pady=5)
entry2 = tk.Entry(root)
entry2.grid(row=1, column=1, padx=10, pady=5)
entry3 = tk.Entry(root)
entry3.grid(row=2, column=1, padx=10, pady=5)
# 创建按键
def show():
print('图片地址:%s' % entry1.get())
print('表格地址:%s' % entry2.get())
print('文件储存地址:%s' % entry3.get())
button1 = tk.Button(root, text='开始移动', command=show).grid(row=3, column=0,
sticky=tk.W, padx=30, pady=5)
button2 = tk.Button(root, text='退出', command=root.quit).grid(row=3, column=1,
sticky=tk.E, padx=30, pady=5)
tk.mainloop()
img_path = entry1.get() #读存放原图片文件的路径
img_name = os.listdir(img_path) # 得到文件夹下的所有文件名称
# print(img_name)
fileName = entry2.get() #报告所在位置
bk=xlrd.open_workbook(fileName) #打开报告
shxrange=range(bk.nsheets) #计算表里sheet的总长度
print(shxrange)
sh=bk.sheet_by_name("Sheet1")
# try:
# sh=bk.sheet_by_name("Sheet1") #指定表里想要读取的sheet的名字report
# except:
# print("未找到指定表")
nrows=bk.sheet_by_name("Sheet1").nrows #获取报告内数据总行数
print(nrows)
os.mkdir(entry3.get()) #创建一个文件夹OutImg,存放想要拷贝的图片
print("创建完成")
for i in range(1,nrows):#循环读表里数据,1是从表内第二行开始,nrows是指刚才读取的最大行数,将读取的行数传给i
row_data=sh.row_values(i) #读取i行对应的值
name=str(row_data[0]) #读取上行读取的值的第一个值,就是图片的名字
for j in img_name: #将读取的图片的名字循环赋值给j
print(j)
print(name)
if name==j:
outimg = entry3.get() # 图片存储路径
shutil.copy(os.path.join(img_path, name), os.path.join(outimg))
# 将名称匹配上的图片拷贝到新建的文件夹内,如果是复制的话,就改成copy,如果是剪贴就用move
else:
print('----------------------------------')
i = i + 1
endtime = datetime.datetime.now()
time = (endtime - starttime).seconds
print(starttime)
print(endtime)
print(time)
os.listdir() 获取文件夹下所有文件的名称
os.mkdir() 创建新文件夹
starttime=datetime.datetime.now() 获取当前时间
最后加了一个时间计算,移动图片总共需要多少时间。
现在是只能新建文件夹,用已有的就不行,后面可以增加勾选,是否新建文件夹,然后现在是只能移动图片,后续也可以增加选项移动图片还是复制图片。
在此次制作工具得过程中也注意到了一个问题,将py文件转成exe文件的时候,如果提示缺失某一个库,但是你python里有这个库,cmd里也有,那可能就是因为缺少的库与所转换的文件不在同一个文件夹内,导致调用不到,提示缺失,此时就可以使用这一条指令来调用这个缺失的库完成exe转换:
D:\pythonWork\baiduai> pyinstaller -F machine1.py --hidden-import 缺失的内容,这次我用的是-w,完成后的工具使用时可以隐藏dos窗口,好用!