码无止境(2)——关于批量文件复制的一个训练(shutil.copyfile的应用)

  • 写在前面:大家好,我是来自财务管理专业的大二学生,这是我的第二个博客啦
  • 问题导入:有一个表格,里面储存有学生的学号和姓名信息;有一堆学生提交的python文件作业。现在需要根据文件名提取学号,以统计交作业名单,并复制该文件,以学号命名移到规范文件夹里,并将文件名不规范的移到新目录下不规范文件夹里
  • 解决方案:我给出的方案如下,注释相当清楚,便于萌新阅读,也欢迎讨论哦
import openpyxl
import os
import shutil

os.mkdir('不规范文件')  #创建不规范目录
os.mkdir('规范文件')    #创建规范文件

#提取excel表学号信息到l
wb_stu=openpyxl.load_workbook('Python2_stu2.xlsx')
sheet_pythonstu=wb_stu['Python2_stu2']
l=[]
for row in sheet_pythonstu.rows:
    for cell in row:
        if str(cell.value).isdigit()==True:
            l.append(cell.value)	#str.isdigit()判断是否为数字信息,True表示为数字信息


#统计学生未交人数
def notsubmit():
    list_totalfile=os.listdir(r'ex2作业文件\收到的文件')
    num_notsubmit=len(l)-len(list_totalfile)
    print(f'有{num_notsubmit}位同学未提交,请自觉一点')


#一个文件的文件名处理
def onefiledealname(filename):
    str_num=''
    for i in str(filename):
        if str(i).isdigit()==True:
            str_num+=str(i)
    if len(str_num)<=14:
        return filename
    else:
        str_stu=str_num[0:8]  #提取py文件的学号
        str_stu+='.py'
        return str_stu


#复制py文件到新目录下
def filecopy():
    for i in os.listdir('ex2作业文件/收到的文件'):
        name=onefiledealname(i)
        if len(name)==11:
            new_name='规范文件/'+name
        else:
            new_name='不规范文件/'+name
        old_name='ex2作业文件/收到的文件/'+str(i)
        shutil.copyfile(old_name,new_name)	#shutil.copyfile(a,b)将a文件复制给b文件,文件属性不变

#主程序
if __name__=='__main__':
    notsubmit()
    filecopy()

  • 写到最后:通过这个练习,我对文件的复制有了更深的体会,最终使用了copyfile函数来实现。目前我不知道怎么把用到的资料上传,如果有萌新想借此练习练习,留下你的邮箱就好。请多多点赞评论哦!o( ̄▽ ̄)ブ

你可能感兴趣的:(excel,os,python)