一道有趣的大厂测试面试题,你能用 Python or Shell 解答吗?

文章讲述了面试中遇到的题目,要求使用Python或Shell遍历A文件夹下的子文件夹中的jpg图片并拷贝到B文件夹。讨论了递归、文件操作难点以及实际面试中可能涉及的需求分析、编程技巧和测试环节。
部署运行你感兴趣的模型镜像

一道有趣的测试面试题目

题目:

在 A 文件夹下有多个子文件夹(a1、b1、c1),每个子文件夹下有好几张 jpg 图片,要求写一段代码(用 Python or Shell),把这些图片全部拷贝并存在 B 文件夹下。

一小撮测试工程师的讨论
聪明的 Cookie 同学:考点就是如何遍历一个文件夹下的文件,需要考虑的是文件路径深度,需要用到递归。

诚实的 黑山老妖同学:我觉得对我来说,难点是操作文件的方法,之前没怎么用过,递归遍历啥的倒是小问题。

经验老道的 剪烛同学:如果拿这个题目面试测试工程师,这个肯定还需要你提问的(考你需求分析),不仅仅是说写个脚本,等你写完了(考你编程熟悉),还会让你针对你写的代码进行测试(考你用例设计),都是套路。图片

爆炸的 hellohell 同学:我再想,如果我碰到这个问题,是否能当场给出正确答案?估计不成,因为 API 全忘掉了。确实记性不好。如果给我个本儿,给上网机会,多费点时间,能搞出来;甚至用了递归,生成器,精简了代码(篡成一行),做了判断。

jpg 是个目录咋办?

不同目录下文件同名咋办?

以及其他

但前提是你不参考任何东西就写代码。但实际工作中好像这种人不多;so, 我只能原地爆炸了。图片 不过打心里还是觉得用 Shell 解决这个问题比较好些。

参考答案

Python 解答(by 煎饼果子)

# -*- coding: utf-8 -*-

import os,shutil



def movefile(srcfile,dstfile):

    fpath,fname=os.path.split(srcfile)

    if os.path.isfile(os.path.join(dstfile,fname)):

        print("%s exist!"%str(os.path.join(dstfile,fname)))

    elif not os.path.isfile(srcfile):

        print("%s not exist!")%(srcfile)

    else:

        fpath,fname=os.path.split(dstfile)

        if not os.path.exists(fpath):

            os.makedirs(fpath)

        shutil.move(srcfile,dstfile)



def getfile(path):

    paths = []

    for root, dirs, files in os.walk(path):

        for file in files:

            paths.append(os.path.join(root,file))

    return paths



def main():

    path = "/path/A"

    pathto = "/path/B"

    paths = getfile(path)

    for pathfrom in paths:

        print(pathfrom)

        movefile(pathfrom,pathto)



if __name__ == '__main__':

    main()

Java 解答(by Lucas)

public void copyImages(File from, File to) throws IOException {

    if(from == null || to == null) {

        throw new RuntimeException("From or To is empty.");

    }



    if(from.isFile()) {

        throw new RuntimeException("From is not directory.");

    }



    if(to.isFile()) {

        throw new RuntimeException("To is not directory.");

    }



    File[] images = from.listFiles(new FileFilter() {

        @Override

        public boolean accept(File pathname) {

            boolean result = false;

            if(pathname.isFile()) {

                String path = pathname.getAbsolutePath().toLowerCase();

                if(path.lastIndexOf(".jpg") > -1

                    || path.lastIndexOf(".png") > -1

                    || path.lastIndexOf(".jpeg") > -1

                    || path.lastIndexOf(".bmp") > -1) {



                    result = true;

                }

            } else {

                result = false;

            }

            return result;

        }

    });



    for(File image : images) {

        copyImagesHelper(image, to);

    }



    File[] dirs = from.listFiles(new FileFilter() {

        @Override

        public boolean accept(File pathname) {

            return pathname.isDirectory();

        }

    });



    for(File dir : dirs) {

        copyImages(from, to);

    }

}



private void copyImagesHelper(File image, File dir) throws IOException {

    String cmd =

        String.format("cp %s %s", image.getAbsolutePath(), dir.getAbsolutePath());

    Runtime runtime = Runtime.getRuntime();

    runtime.exec(cmd);

}

Shell 解答(by 杰)

find  ./A/ -maxdepth 2  -name '*.jpg' -exec cp {} ./B \;

推荐

Python全栈开发与自动化测试开发班
由浅入深实战进阶,从小白到高手

以Python全栈开发为基础,深入教授自动化测试技能,为学员打造全面的技术能力。通过系统学习和实际项目实战,学员将具备在职场中脱颖而出的竞争力。不仅能够灵活运用Python进行开发,还能够保障项目质量通过自动化测试手段。这是一个全面提升职业竞争力的机会。

课程详情
Python开发必备基础技能与项目实战
Pvthon 编程语言/算法和数据结构/面向对象编程Web后端开发/前端开发/测试管理平台项目实战

人工智能ChatGPT实战
人工智能辅助学习各种开发和测试技能/Pytorch深度学框架/平台开发实战

数据分析与自动化办公
数据采集/Pandas与数据处理技术/ECharts与数据可视化技术/爬虫实战/自动化办公/批量文件处理

UI自动化测试与高级项目实战
Web自动化测试/App自动化测试/ PageObject设计模式

接口自动化测试
接口协议分析/Mock实战/服务端接口测试

性能测试
性能测试流程与方法/JMeter 脚本参数化/Grafana监控系统搭建

简历指导与模拟面试
1V1简历指导/模拟真实面试/测试开发岗面试全攻略名企私教服务
名企专家1v1辅导/行业专家技术指导/针对性解决工作难题/绩效提升辅导与晋升复盘

课程亮点
名企私教服务 先学习后付费 高额奖学金
专属社群+晚自习在线答疑
5V1全方位辅导作业+考试强化学习效果
简历修改 模拟面试 就业内推 面试复盘
在这里插入图片描述

福利一: 测试开发精品课免费学

在这里插入图片描述

福利二:免费领取技能图谱&大厂面试题合集

在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值