Python3自动化_文件批量处理(文本、PDF、Excel;读取、筛选、导
发布时间:2020-12-20 10:03:13 所属栏目:Python 来源:网络整理
导读:利用Python3脚本语言的简练语法,高级语言的丰富类库,快速写了几个文件读
利用Python3脚本语言的简练语法,高级语言的丰富类库,快速写了几个文件读取、筛选、导出的“脚本”。 这里简单总结一下关键功能。 ?读取ini配置文件检查ini文件是否存在;检查输入的key在ini文件里是否有定义。 1 import configparser ? 多参数输入的获取检查参数个数;检查参数合法性(长度,是否目录);检查参数是否整个都是汉字。 _main(): 2 3 path = '' 4 keyWord = 7 para = input(rPlease input the PDF directory and Key Word: (Press [Enter] to quit):).strip().split() 8 9 len(para): 10 11 12 if 2 !=13 Two para -> [PDF directory and Key Word] is needed .' + n14 continue 16 path = para[0] 17 keyWord = para[1] 18 not os.path.exists(path): input path is not a exists path.21 22 23 flg = True 24 for char keyWord.strip(): 25 if char <= uu4e00' or char >= uu9fa526 flg = False 27 break 28 flg: 29 Please input the Chinese Key Word for search.(Such as '物流').30 31 32 break ? PostgreSQL数据库处理根据ini文件定义的数据库连接信息,尝试连库;执行SQL文。 psycopg2 ?? 日志处理定义输出日志的级别;异常级别时,处理结束。 1 logging.basicConfig(filename=log_' + datetime.now().strftime(%Y%m%d') + .txt,1)"> 2 level=logging.INFO,1)"> 3 format= %(asctime)s - %(levelname)s - %(message)s 4 5 logLevel = {D: logging.DEBUG,1)"> 6 I: logging.INFO,1)"> 7 W: logging.WARNING,1)"> 8 : logging.ERROR,1)"> 9 C: logging.CRITICAL} 11 printLog(_lvl,_msg): 12 logging.log(logLevel[_lvl],_msg) 13 if logging.ERROR == logLevel[_lvl]: 14 print(_msg) 15 exit() 17 18 printLog(srcpath is not a exists path.19 printLog(Get Src Path : %s' % srcPath) ?? MAP函数运用列表元素批量处理,按第二个下划线字符截取字符串。 1 getPreOfNm(x): 2 if 1 < x.count(_): 3 return x[0:x.find(') + 1)] 4 5 x 6 7 Get prefix of CRUD object name 8 prefixObjNm = list(set(map(getPreOfNm,lstTb))) 9 prefixObjNm.sort() ?? 目录处理目录/文件判断;目录的路径分割;完整路径的文件名取得; Check the srcPath 2 fullFilePaths = [] 3 if os.path.isdir(srcPath): 4 for folderName,subFolders,fileNames os.walk(srcPath): 5 if os.path.split(folderName)[1] in [tcsdoc']: 6 for fn fileNames: 7 Get src file 8 mObj = fileNmReg.search(fn) 9 mObj: fullFilePaths.append(os.path.join(folderName,fn)) elif os.path.isfile(srcPath): 12 13 fn = os.path.basename(os.path.realpath(srcPath)) 14 mObj =15 16 fullFilePaths.append(srcPath) ?? PDF文件读取来源:https://www.cnblogs.com/alexzhang92/p/11488949.html from pdfminer.converter TextConverter 2 from pdfminer.layout LAParams from pdfminer.pdfinterp PDFResourceManager,process_pdf os 6 7 read_pdf(pdf): resource manager 9 rsrcmgr = PDFResourceManager() 10 retstr = StringIO() 11 laparams = LAParams() device 13 device = TextConverter(rsrcmgr,retstr,laparams=laparams) process_pdf(rsrcmgr,device,pdf) device.close() 16 content = retstr.getvalue() retstr.close() 获取所有行 19 contents = str(content).split(""20 21 return contents ? CSV文件导出Init result file 2 rstFile = open(os.path.join(srcPath,1)">[CRUD]%Y%m%d%H%M%S.csv'),1)">w''3 rstWtr = csv.writer(rstFile,delimiter=t4 Write head 5 rstWtr.writerow([TYPECIENCODELINE NUMCRUDTABLE NMFULL PATH']) ? Excel文件读写利用openpyxl读写xlsx,不支持xls; 获取工作簿、工作表、单元格(直接定位及相对位置); 单元格赋值。 os,openpyxl Init file path 4 srcPath = r.newDocs' Start Search 9 for fileName 11 filePath = os.path.join(folderName,fileName) 12 14 wb_WorkBook = openpyxl.load_workbook(filePath) 15 openpyxl.utils.exceptions.InvalidFileException: 16 print(fileName + xls read failed wb_WorkBook.close() 19 20 _履歴 21 st_Rireki = wb_WorkBook[_履歴22 if None is st_Rireki: 23 _履歴 is not exist24 25 26 cl_Version = st_Rireki[AQ1027 28 is cl_Version.value or 29 0 == len(str(cl_Version.value).strip()): 30 cl_Version.value = 1.0.2.032 cl_JobNo = st_Rireki.cell(row=cl_Version.row - 1,column=cl_Version.column) 33 cl_JobNo.value = 12334 35 wb_WorkBook.save(filePath) 36 37 38 39 40 cl_Version = st_Rireki.cell(row=cl_Version.row + 5,1)">41 42 wb_WorkBook.close() ? ? 转载请注明原文链接,谢谢。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |