Python 编程案例:谁没交论文?输出并生成电子表格

简介: Python 编程案例:谁没交论文?输出并生成电子表格

Python 编程案例:谁没交论文?输出并生成电子表格
在工作或者学习中经常会对文件进行分类,比方说按姓名分类(也可以有其他分类,在此举例用姓名),就是以姓名建文件夹,然后把该人的文件存到相应姓名的文件夹中。结合真实案例,眼下正是一年的毕业季,很多大学的毕业生都需要提交论文报告。比方说所有的文件夹都在目录 /Users/liuxiaowei/project 下,每位同学都需要上交4份文件:开题报告 、中期报告、任务书、指导记录表。发现有些同学缺失一些文件,我们需要将谁缺少哪种文件找出来。如果人很多的情况下,这也是不小的工作量。但是利用Python编程进行统计并输出就很容易了。

  • macOS Monterey Version 12.3.1 系统
  • Pycharm 2020.1

下面分享一下我的代码:

#_*_coding:utf-8_*_
# 作者      :liuxiaowei
# 创建时间   :4/6/22 9:54 PM
# 文件      :谁没交论文.py
# IDE      :PyCharm

# 新建包含所有论文报告名称的列表
all_report_Lst = ['开题报告', '中期报告', '任务书', '指导记录表']

# 导入模块
import os
import csv
from openpyxl import Workbook

# 获取全体人员名单列表
allPersons = os.listdir('/Users/liuxiaowei/project')
path = '/Users/liuxiaowei/project'

# 定义一个函数,人为参数,返回每个人的所有报告
def every_person_report(person):
    all_reports = []  # 定义一个空列表,添加报告名,因为每个人的文件夹下的文件包含"_人名"
    targetPath = os.path.join(path, person)
    # 每个人的报告列表
    all_reports_files = os.listdir(targetPath)
    for report in all_reports_files:
        all_reports.append(report.split('_')[0])   # split()函数取报告名称,去掉人名
    return all_reports
# 新建一个工作簿
wb = Workbook()
ws = wb.active
# 设定默认表单名称
ws.title = '没交报告的人员集报告名称'

# 定义一个输出没有上交的报告的函数,人名和人的已上交的报告为参数
def not_in_report(person, reports):

    for item in all_report_Lst:
        if item not in reports:
            # 向表单添加数据
            ws.append([person, item])
            print(f'{person}没有交{item}')
    # 保存并输出点子表格
    wb.save('没交论文的名单.xlsx')

# 主程序
if __name__ == '__main__':
    for person in allPersons:
        if person == '.DS_Store':  # 因为项目文件夹下存在这个隐藏文件名,所以要跳过
            continue
        if len(every_person_report(person)) == 4:
            print(f'{person}全部交完!')
           # continue     # 只显示没交的报告名
        else:
            not_in_report(person, every_person_report(person))

运行结果如下:

/Users/liuxiaowei/PycharmProjects/夜曲编程/venv/bin/python /Users/liuxiaowei/PycharmProjects/夜曲编程/谁没交论文.py
陈大和没有交指导记录表
杨朝全没有交开题报告
蒙洁没有交开题报告
苑维玮全部交完!
吴瑞斌全部交完!
曾凤鸣没有交开题报告
曾凤鸣没有交任务书
曾凤鸣没有交指导记录表
倪淑婷没有交中期报告
佟喜全部交完!
金泰佑没有交指导记录表
丁群群没有交开题报告
何昭华没有交任务书
何昭华没有交指导记录表
承亚全部交完!
盛远全部交完!
宋灏全部交完!
许明峰没有交指导记录表
王伯春没有交开题报告
王伯春没有交任务书
何志利没有交开题报告
翟程程全部交完!
刘文彦全部交完!
廖舒婷没有交开题报告
鲁志林全部交完!
赵彩玉全部交完!
党晖没有交中期报告
杨成连没有交中期报告
张成芝没有交任务书
董蔚全部交完!
陈敬泽全部交完!
贾婧全部交完!
马铭璐没有交指导记录表
徐奇伟全部交完!
谢旺良没有交中期报告
陈元丰全部交完!
高庆山全部交完!
范广梅没有交中期报告
范广梅没有交任务书
周延飞全部交完!
黄晓腾没有交任务书
张卫霞没有交开题报告
蒋建和没有交开题报告
石少军没有交开题报告
贺友良没有交中期报告
贺友良没有交任务书
邢天宇没有交开题报告
任永信没有交指导记录表
吴婷娟没有交开题报告
马丹艳没有交任务书
张雄明全部交完!
徐秋海全部交完!
钟炫没有交开题报告
钟炫没有交中期报告
石卫峰全部交完!
刘亦兵全部交完!
陈紫琦没有交指导记录表
王布和没有交中期报告
林思蓉没有交任务书
许罗全部交完!
李显贵全部交完!
陆根良没有交开题报告
陆根良没有交中期报告
罗先芝全部交完!
谢炳荣没有交任务书
王雨坤没有交中期报告
王雨坤没有交指导记录表

如下图生成电子表格文件:

image.png
image.png

相关文章
|
9天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
2天前
|
Python
Python编程入门:从零开始的代码旅程
本文是一篇针对Python编程初学者的入门指南,将介绍Python的基本语法、数据类型、控制结构以及函数等概念。文章旨在帮助读者快速掌握Python编程的基础知识,并能够编写简单的Python程序。通过本文的学习,读者将能够理解Python代码的基本结构和逻辑,为进一步深入学习打下坚实的基础。
|
6天前
|
数据采集 存储 数据处理
Python中的多线程编程及其在数据处理中的应用
本文深入探讨了Python中多线程编程的概念、原理和实现方法,并详细介绍了其在数据处理领域的应用。通过对比单线程与多线程的性能差异,展示了多线程编程在提升程序运行效率方面的显著优势。文章还提供了实际案例,帮助读者更好地理解和掌握多线程编程技术。
|
9天前
|
存储 人工智能 数据挖掘
Python编程入门:打造你的第一个程序
本文旨在为初学者提供Python编程的初步指导,通过介绍Python语言的基础概念、开发环境的搭建以及一个简单的代码示例,帮助读者快速入门。文章将引导你理解编程思维,学会如何编写、运行和调试Python代码,从而开启编程之旅。
34 2
|
10天前
|
存储 Python
Python编程入门:理解基础语法与编写简单程序
本文旨在为初学者提供一个关于如何开始使用Python编程语言的指南。我们将从安装Python环境开始,逐步介绍变量、数据类型、控制结构、函数和模块等基本概念。通过实例演示和练习,读者将学会如何编写简单的Python程序,并了解如何解决常见的编程问题。文章最后将提供一些资源,以供进一步学习和实践。
22 1
|
13天前
|
存储 网络协议 IDE
从零起步学习Python编程
从零起步学习Python编程
|
11天前
|
机器学习/深度学习 存储 数据挖掘
Python 编程入门:理解变量、数据类型和基本运算
【10月更文挑战第43天】在编程的海洋中,Python是一艘易于驾驭的小船。本文将带你启航,探索Python编程的基础:变量的声明与使用、丰富的数据类型以及如何通过基本运算符来操作它们。我们将从浅显易懂的例子出发,逐步深入到代码示例,确保即使是零基础的读者也能跟上步伐。准备好了吗?让我们开始吧!
23 0
|
15天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
15天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
15天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!