前言
作为一名学委每次收电子作业都会比较头疼----要在茫茫文件中找到未交作业的人
但是作为一个计科人呢,或许应该用一些简单的代码动手做一个小程序,好免去劳累之苦。
思路
拿到源数据(班人名单)和目标文件数据(作业文件夹),循环比对(粗比对),如果某一源数据值在目标文件中出现,则删掉源数据中的该值及目标文件中对应的值,最后输出剔除完毕的源数据,即为未交人数据
示例
所用基本库
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") #在命令框运行时用此来暂停以便查看数据