【幼升小信息-03】20220611批量模板制作 幼儿基本信息收集文件夹(包含PDF、Word、证件文件夹)
一、背景需求
? ? ? 2022年6月上海幼升小登記,由于疫情全部在網上進行,如何讓家長用手機、電腦自主修改“草表”信息,如何快速從家長手中收集各類證件,就成為大班老師的工作重點。
二、操作思路:
? ? ? 從一網通辦 下載了28份幼兒PDF草表,PDF文件名=名字(身份證).py
?為了便于查找,在每位孩子名字前加上學號(兩位數),PDF文件名=學號名字(身份證).py
通過各種信息的收集,我認為第一次發送給家長的文件夾里需要包括四項內容“。
1、查看用的PDF草表(固定格式)
2、可以編輯添加修改信息的DOCX文件(編輯格式)
3、證件收集:”上海戶籍“文件夾(內含6個子文件夾),外省戶籍(內含有8個子文件夾)
4、word修改過程的文字記錄+三份家長電子簽字(截圖或PDF)(教師整理)
?01上海戶籍需要需要提供的證明:
??02外省戶籍需要需要提供的證明:
??
??03修改過程及簽名的預設六個文件夾:
?經過思考大致需要以上的文件及文件夾。
?三、代碼演示
(一)操作準備:
? ? ? ? ?本代碼是將各種代碼拼貼修改而成的,我對原理一知半解,無法變通。因此用死辦法必須完全按照操作說明進行準備,才能保證運行成功。
1.路徑:
(1)在D盤下新建test 在test下新建info。
?(2)將幼兒X份PDF文件放入d:\test\info
(3)在D:\test\info下新建“文本文檔”=py文件
?
?
?
?請先制作py文件吧(代碼如下)
from logging import root import timeprint('-----------202206大班登記草表文件夾批量生成代碼-----------') print('--------------------------------------------------------') print('\n操作說明\n') print('1.選擇文件夾:\n打開VS頁面-左上角“文件”-“打開文件夾”-D-test-info(鼠標點擊一下info, 打開右下角“選擇文件夾”)\n') print('2.新建 D盤 下 test 下 info三級目錄\n') print('3.把本代碼py放在D盤 下 test 下 info內(py和PDF同一級目錄)\n') print('--------------------------------------------------------') time.sleep(1) answer=int(input('你已經按照操作說明進行設置了嗎?\n已經設置=1,沒有設置=2\n'))if answer==1:print('-----------準備.把PDF草表放在一個文件夾內:D盤的test\info-----------')time.sleep(3)print('-----------第1步.腳本實現:將PDF文件轉Word-----------')print('-----------目的.家長用Word進行信息修改(比如紅字加粗)-----------')time.sleep(3)import osfrom pdf2docx import Converterimport timeimport PyPDF2def pdf_word():global file_pathfile_path = r'D:\test\info'# 創建一個對應新文件夾,用于后期存放word文件new_file = os.makedirs(file_path+ '\\1')#生成的1文件夾,但不把資料導入其中# new_file = os.makedirs(file_path + '\\docx')#生成的docx文件夾# new_file_path = r'D:\test\nn\docx' #生成的docx文件都放在docx文件夾下面new_file_path = r'D:\test\info'#生成docx文件和pdf文件在同一級目錄下#這里需要在同個文件夾下# 拿到目標文件夾下面的所有pdffor root, dirs, files in os.walk(file_path):## root:路徑# dirs:目錄# files:文件# for f in files:suff_name = os.path.splitext(f)[1] # 判斷文件名后綴是否為pdfif suff_name != '.pdf':passelse:file_name = os.path.splitext(f)[0] # 獲取文件名target_pdf_name = file_path + '\\' + f # 目標pdf 文件路徑word_name = new_file_path + '\\' + file_name + '.docx' # 轉換的word文件print(word_name)try:PyPDF2.PdfFileReader(open(target_pdf_name, "rb")) # 檢驗pdf文件是否可以正常打開cv = Converter(target_pdf_name)cv.convert(word_name)cv.close()except PyPDF2.utils.PdfReadError:print(target_pdf_name, "Invalid PDF file")except OSError:print("Not PDF file")else:passif __name__ == '__main__':start = time.time()pdf_word()end = time.time()print('task is over: %.2f' % (end-start))# 把docx文件移出到PDF同級,刪除docx文件夾# 刪除1文件夾,如果沒有新建的文件夾1,pdf轉docx就不會運行。所以必須新建一個(為了拷貝時不至于多復制一個空的1文件,這里把這個空文件夾刪除os.rmdir(r'D:\test\info\1')print('-----------第1步.end-----------')print('-----------第2步.幼兒草表pdf和docx導入同名文件夾-----------')print('-----------目的.批量生成個人文件夾----------------')import osimport shutil# 獲取當前目錄下所有文件及目錄# file_path2='D:/test/'listDir = os.listdir(r'D:\test\info') # D/test/info# 遍歷folders1=[]for dir in listDir:# 判斷如果是文件夾或是自己則忽略if os.path.isdir(dir) or '幼升小信息登記文件夾打包.py'== dir:continue# 分離文件名和擴展名,獲取不帶后綴的文件名dirName = os.path.splitext(dir)[0]# 判斷是否存在同名目錄,# 不存在則將創建此目錄,將同名文件移動到目錄,# 存在則直接移動到此目錄if not os.path.exists(dirName):os.mkdir(dirName)# os.makedirs(dirName)shutil.move(dir, dirName) folders1.append(dirName) folders2=[][folders2.append(x) for x in folders1 if x not in folders2]print(folders2)print('-----------第2步.end-----------')print('-----------第3步.每個幼兒文件夾里都有裝“佐證材料-證件照片"的文件夾-----------')print('-----------目的.便于家長根據文件名要求,把各類證明材料放入其中----------------')import osimport itertoolsimport timefile_dir=r'D:/test/info'for root,dirs,files in os.walk(file_dir,topdown=False): # 提取root 所有一級路徑、二級路徑(沒有文件) dir=03 04文件夾,file 文件名# print(root) # D:/test/info\03 D:/test/info\04 D:/test/info 兩個三級路徑、1個一級路徑# print(dirs) #[][]['03', '04'] 兩個文件夾在一起# print(files)#[][]['幼升小信息登記文件夾打包.py', '02打包.py', '123.py'] 非文件夾的pyfor name in dirs: #name來自['03', '04']遍歷循環,root_path=os.path.join(root,name) #組合文件路徑+文件夾名 root+03\root+04# print(b) folders1=['01 上海戶籍']genders1 = ['01 戶口本(第1頁地址 戶主頁 幼兒頁)','02 房產證(第一頁到最后一頁或者租賃合同)','03 人戶分離證明(居住地入學提供)','04 父母身份證','05 孩子出生證明','06 其他證明']#二級for folder1,gender1 in itertools.product(folders1, genders1):#folder=一級目錄地址 gender=添加的子文件夾os.makedirs(os.path.join(root_path,folder1,gender1)) # os.mkdir(os.path.join(b,folder1,gender1)) folders2=['02 外省戶籍']genders2 = ['01 戶口本(第1頁地址 戶主頁 幼兒頁)','02 房產證( 第一頁到最后一頁或者租賃合同備案等)','03 父母雙方身份證','04 父母雙方與孩子的居住證或者憑證','05 積分證明','06 孩子出生證明','07 父母社保繳納情況或者靈活就業證明','08 其他證明']#二級for folder2,gender2 in itertools.product(folders2, genders2):#folder=一級目錄地址 gender=添加的子文件夾os.makedirs(os.path.join(root_path,folder2,gender2))folders3=['03 修改過程及簽名']genders3 = ['01第1次修改','02第2次修改','03第3次修改','04(草表修訂)簽名','05(正表預覽)簽名','06(正表回執)簽名']#二級for folder3,gender3 in itertools.product(folders3, genders3):#folder=一級目錄地址 gender=添加的子文件夾os.makedirs(os.path.join(root_path,folder3,gender3))print('-----------第3步.end-----------')print('-----------第4步.每個幼兒文件夾打包rar-----------')print('-----------目的.便于單獨私發家長微信----------------')def compress(input_file, output_file, root_path, rar_path='C:/"Program Files (x86)"/WinRAR/WinRAR.exe'):#rar_path='C:/"Program Files (x86)"/360/360zip/360zip.exe'):"""調用CMD命令壓縮文件/文件夾Parameters----------input_file : 需要壓縮的文件/文件夾名。從哪一級目錄開始,就會從哪一級開始壓縮;output_file : 壓縮文件的輸出路徑及其壓縮的文件名;可以是.rar, .zip;root_path: input_file 所在目錄;rar_path : WinRAR軟件的安裝路徑,The default is 'C:/"Program Files"/WinRAR/WinRAR.exe'.NOTE: 路徑和文件名中帶空格的時候一定要多加一重引號!!"""cmd_command = r'%s a %s %s' % (rar_path, output_file, input_file)os.chdir(root_path) # 切換工作目錄os.system(cmd_command)if os.system(cmd_command)==0:print('Successful backup to', output_file)else:print('Backup FAILED', input_file) root_path = "D:/test/info"lists = os.listdir(root_path)for fp in lists: if '幼升小信息登記文件夾打包.py'== fp :continueinput_file = '"' + fp + '"' #待壓縮的文件路徑及文件,多加一重引號output_file = '"' + fp + '.rar"' #壓縮文件的輸出路徑及文件名,多加一重引號compress(input_file, output_file, root_path)print('-----------第4步.end-----------')if answer==2:print('我去設置一下/等會兒再說')pass2.VS文件夾設置
本文有一個固定打開路徑,請一定要設置好,否則都是報錯
?
?
?
?基本設置完成。
(二)代碼內容解析構成:
? ? ?1、簡要需求:
? ? ?將3個PDf文件轉換成3個Word,3套Word+PDF合并到自己同名文件夾(3個)。3個文件夾內都插入“上海戶籍”“外省戶籍”“修改過程和簽字”三個相同的文件夾.最后打包RAR文件
? ? 2、代碼的構建思路和步驟如下:
3、運行效果圖片展示。
?
?
??
?
?
?每個文件夾里,插入相同3個文件夾,主要用了以下的代碼:
?此時每個孩子文件夾里都有5個文件
?
?
?
? (4)代碼運行及文件生成過程的視頻演示
python幼升小信息登記文件夾打包視頻
?三、實際運用情況反饋
五、總結反思:
? ? ? ?前期(5月31日):分段測試
? ? ? 從5月31日開始制作“幼升小信息登記文件夾打包.py”,陸續出現各種問題,最初是分別運行四組代碼逐步完成了文件打包。
? ? ? ?效果:提高效率、正確率
? ? ? ? 這個五組資料文件包,為家長提供便于修改的DOCX,也能根據證件文件夾名稱添入各類證件,(打包回傳)后,統一的文件名格式(學號名字+內容)便于教師快速分類,電子稿信息的提供,大大減輕了教師手動輸入、人工整理的工作量,
? ? ? ?后期(6月11日):串聯測試
? ? ? ? ? 在11天的調試后,最終在6月11日打通了全部堵點,將“pdf轉docx""PDF+Docx合同到同名文件夾”“每個文件里都加入三個固定文件夾(及子文件)‘”“打包rar”,組合在一起了。
???????效果:了解路徑的提取和組合。
? ? ? ? 破解批量加入“三個固定文件夾及子文件”的問題,花費了很長的時間。root和file的提取,及組合,刪除多余文件夾,不要打包py文件等等。python中的任何小細節會直接影響程序的結果。
六、感悟:
為了幼兒園辦公實際任務,我研究了這個打包文件的代碼,雖然完成后它的使用效率高,但是為了這個只用一次的項目(幼升小證件收集批量文件夾的打包),需要花費幾十倍的時間去研究,這個過程常常讓我感到是否值得?
也許只有自己能掌握更多編程方法,能夠應對千變萬化的教學、辦公的批量需求時,就會真正感覺到前期付出的學習時間是值得的、是有價值的。
總結
以上是生活随笔為你收集整理的【幼升小信息-03】20220611批量模板制作 幼儿基本信息收集文件夹(包含PDF、Word、证件文件夹)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020年最新中国行政地区三级、四级、五
- 下一篇: iphone游戏-钢铁侠2 Iron M