pythonスクリプトに基づく自動バッチファイル名の変更
大学のモニターとして、宿題を集めるという問題に直面することがよくあります。電子ファイルの数のカウントを容易にするために、そして清楚さと美しさのために、教師はしばしば割り当ての命名形式を指定します。
例:「クラス+学生ID + name_homeworkone」形式。しかし、学生によって提出された課題の名前はしばしば奇妙です。
これがあります:「Communication170101 + Zhang San + HomeworkOne」に
もこれがあります:「1403170101 + Zhang San_ HomeworkOne」
そしてこれさえ:「Communication170101 Zhang Three HomeworkOne」は
明確かつ正しく名前が付けられています:「Communication 170101枚three_homeworkone "。しかし、それは非常に単純な問題であり、多くの人がうまくやることができません。その結果、宿題を受け取るときに一つずつ名前を変えなければならず、頭が大きくなりました。
そこで、すべての厄介な名前を自動的に修正する小さなプログラムをpythonで作成しました。
言うまでもありませんが、プログラムを見てください。しかし、私は最初に準備を紹介する必要があります。
まず、デスクトップに完全なクラスリストを含むexcelファイルがあります。これ
を開くと、
次のようになります。次に、名前を変更するすべてのファイルを別のフォルダーに配置できます。
import os
import pandas as pd
import re
#这个函数是把每个人的学号和名字从excel文件里提取出来,以便下面改名
def excel_to_list(name_list):
df = pd.read_excel(name_list, usecols=[1,2],names=None)
#读取项目名称列
#usecols=[1,2]表明取第二列和第三列,也就是学号和名字。
#names=None表明不要列名
df_li = df.values.tolist()
#print(df_li)
return df_li #return的就是学号和名字
if __name__ == '__main__':
name_list = "C:\\Users\\admin\\Desktop\\通信1701名单.xlsx" #花名册地址
path = 'C:\\Users\\admin\\Desktop\\新建文件夹\\' #收作业地址
work_name = '预习作业一' #作业名字后缀
num_name_list = excel_to_list(name_list)
count = 0; #数数一共有几份作业,看看齐了没
for file in os.listdir(path): #遍历作业地址中每一份作业
try:
type = str(file).split('.')[1] #判断是.doc文件还是.pdf文件等,保持格式不变
type = '.' + type
print("检测到此次作业类型为",type,"类型")
except:
type = None #文件夹就没有格式后缀了
print("检测到此次作业类型为文件夹类型")
ini_taskname = str(file).split('.')[0] #把文件名中除了格式后缀的部分拿出来
for nn in num_name_list:
num = str(nn[0]) #学号
na = nn[1] #名字
if re.findall(r'1402',ini_taskname): #正则表达式,如果在学号中找到了‘1402’,说明是电子专业
class_name = '电子'
else:
class_name = '通信'
if re.findall(str(na)[0:3],ini_taskname): #只要文件名中写了本人姓名,就成功匹配到他的名字和学号。
count = count+1;
if type is None: #对所有文件夹改名
os.rename(os.path.join(path,file),os.path.join(path,class_name+str(num[-6:])+str(na)+'_'+work_name))
else: #对所有非文件夹文件改名
os.rename(os.path.join(path,file),os.path.join(path,class_name+str(num[-6:])+str(na)+'_'+work_name+type))
#新的文件夹名字为“作业地址+专业名+班级学号(num[-6:0]是班级+学号的意思)+名字+下划线+文件格式”
print("本次共计处理",count,"个文件") #看看作业收起了没
考えてみると、みんなの作品を自分に合わせる良い方法はなく、名前を合わせるために通常の表現を使うだけです。自分の名前を書かずに宿題を渡す人はいないでしょう?
脱落することをお勧めします
一般的に、これは非常に便利なスクリプトです。最初の2年間は手動でファイル名を変更するのは非常に愚かで、多くの時間を無駄にしました。この小さなコードが、ファイルを頻繁に受信したいユーザーに役立つことを願っています。
悪くないと思われる場合は、気に入って、次回は他の役立つことを共有することをお勧めします。