一天高中的女同桌突然问我是不是程序猿

背景

昨天一个我高中的女同桌突然发微信问我“你是不是程序猿 我有问题求助”,

image-20211015101843733.png

先是激动后是茫然再是冷静,毕业多年不见联系,突然发个信息求助,感觉大脑有点反应不过来... 再说我一个搞Android的也不咋会python啊(不是说Java不能实现,大家懂的,人生苦短,我用python),即使如此, 为了大家的面子,为了程序猿们的脸,不就简单的小Python嘛,必须答应!

梳理需求

现有excel表格记录着 有效图片的名字,如:

image-20211015103418631.png

要从一个文件夹里把excel表格里记录名字的图片筛选出来;

需求也不是很难,代码思路就有了:

  1. 读取Excel表格第一列的信息并放入A集合
  2. 遍历文件夹下所有的文件,判断文件名字是否存在A集合
  3. 存在A集合则拷贝到目标文件夹

实现(Python 2.7)

读取Excel表格

加载Excel表格的方法有很多种,例如pandasxlrdopenpyxl,我这里选择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)
复制代码

简单搞定!没有砸程序猿的招牌,豪横的把成果发给女同桌,结果:

image-20211015112550343.png

换来有机会请你吃饭,微信都不带回的,哎 ,xdm,小丑竟是我自己! 小丑竟是我自己什么梗-小丑竟是我自己是什么意思出自什么-55手游网

猜你喜欢

转载自juejin.im/post/7019167108185456677