一天高中的女同桌突然问我是不是程序猿
背景
昨天一个我高中的女同桌突然发微信问我“你是不是程序猿 我有问题求助”,
先是激动后是茫然再是冷静,毕业多年不见联系,突然发个信息求助,感觉大脑有点反应不过来... 再说我一个搞Android的也不咋会python啊(不是说Java不能实现,大家懂的,人生苦短,我用python),即使如此,
为了大家的面子,为了程序猿们的脸,不就简单的小Python嘛,必须答应!
梳理需求
现有excel表格记录着 有效图片的名字,如:
要从一个文件夹里把excel表格里记录名字的图片筛选出来;
需求也不是很难,代码思路就有了:
- 读取Excel表格第一列的信息并放入A集合
- 遍历文件夹下所有的文件,判断文件名字是否存在A集合
- 存在A集合则拷贝到目标文件夹
实现(Python 2.7)
读取Excel表格
加载Excel表格的方法有很多种,例如pandas、xlrd、openpyxl,我这里选择openpyxl库,
先安装库
pip install openpyxl
代码如下:
from openpyxl import load_workbook
def handler_excel(filename=r'C:/Users/xxx/Desktop/haha.xlsx'):
# 根据文件路径加载一个excel表格,这里包含所有的sheet
excel = load_workbook(filename)
# 根据sheet名称加载对应的table
table = excel.get_sheet_by_name('Sheet1')
imgnames = []
# 读取所有列
for column in table.columns:
for cell in column:
imgnames.append(cell.value+".png")
# 选择图片
pickImg(imgnames)
遍历文件夹读取文件名,找到target并拷贝
使用os.listdir 方法遍历文件,这里注意windows环境下拿到的unicode编码,需要GBK重新解码
def pickImg(pickImageNames):
# 遍历所有图片集的文件名
for image in os.listdir(
r"C:\Users\xxx\Desktop\work\img"):
# 使用gbk解码,不然中文乱码
u_file = image.decode('gbk')
print(u_file)
if u_file in pickImageNames:
oldname = r"C:\Users\xxx\Desktop\work\img/" + image
newname = r"C:\Users\xxx\Desktop\work\target/" + image
# 文件拷贝
shutil.copyfile(oldname, newname)
简单搞定!没有砸程序猿的招牌,豪横的把成果发给女同桌,结果:
换来有机会请你吃饭,微信都不带回的,哎 ,xdm,小丑竟是我自己!
作者:李诺曹
来源:juejin.cn/post/7019167108185456677
来源:juejin.cn/post/7019167108185456677