收作业小帮手

前言

        作为一名学委每次收电子作业都会比较头疼----要在茫茫文件中找到未交作业的人

但是作为一个计科人呢,或许应该用一些简单的代码动手做一个小程序,好免去劳累之苦。

思路

        拿到源数据(班人名单)和目标文件数据(作业文件夹),循环比对(粗比对),如果某一源数据值在目标文件中出现,则删掉源数据中的该值及目标文件中对应的值,最后输出剔除完毕的源数据,即为未交人数据

示例

 

 

所用基本库

from os import listdir          #获取目标文件夹内文件名称
from os import system           #程序运行完后暂停一下
import tkinter as tk            
from tkinter import filedialog  #用于获取所选文件路径

源数据按行读取(得到列表)

with open("data.txt","r",encoding="utf-8") as f:
    datas=f.read().splitlines()
print(datas)

目标文件夹数据读取(得到列表)

from os import listdir
path=""
file_list=listdir(path)
print(file_list)

数据对比

for file in file_list:
    for data in datas:
        if data in file:
            datas.remove(data)
            break

输出处理后的源数据

for data in datas:
    print(data)

完整源码

from os import listdir          #获取目标文件夹内文件名称
from os import system           #程序运行完后暂停一下

data_path=""                    #数据源路径:***.txt
file_path=""                    #目标文件路径

with open(data_path,"r",encoding="utf-8") as  f:
    datas=f.read().splitlines()
num_datas=len(datas)

file_list=listdir(file_path)


for file in file_list:
    for data in datas:
        if data in file:
            datas.remove(data)
            break
print("源数据数:",num_datas)
print("已有数据数:",num_datas-len(datas))
print("缺失数据数:",len(datas))
print("缺失数据:")
for data in datas:
    print(data)
system("pause")                #在命令框运行时用此来暂停以便查看数据

加上文件选择框体功能

import tkinter as tk            
from tkinter import filedialog  #用于获取所选文件路径
root=tk.Tk()
root.withdraw()
datas_path=filedialog.askopenfilename()
file_path=filedialog.askdirectory()

带文件选择框体的源码

from os import listdir          #获取目标文件夹内文件名称
from os import system           #程序运行完后暂停一下
import tkinter as tk            
from tkinter import filedialog  #用于获取所选文件路径
root=tk.Tk()
root.withdraw()                 
data_path=filedialog.askopenfilename() #数据源路径:***.txt
file_path=filedialog.askdirectory()    #目标文件路径

with open(data_path,"r",encoding="utf-8") as  f:
    datas=f.read().splitlines()
num_datas=len(datas)

file_list=listdir(file_path)


for file in file_list:
    for data in datas:
        if data in file:
            datas.remove(data)
            break
print("源数据数:",num_datas)
print("已有数据数:",num_datas-len(datas))
print("缺失数据数:",len(datas))
print("缺失数据:")
for data in datas:
    print(data)
system("pause")                #在命令框运行时用此来暂停以便查看数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计科小宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值