按照文件名最后数字进行排序

您所在的位置:网站首页 文档智能排序 按照文件名最后数字进行排序

按照文件名最后数字进行排序

2024-01-19 16:11| 来源: 网络整理| 查看: 265

简 介: 修改了ppt2csdn中存在的文件名称排序错误。通过提取文件名称最后面的数字字符串来作为文件排序的关键字,可以消除PPT文件在转存成JPEG文件时对应的数码编码方式。 关键词: PPT,JPEG,Python,排序

文件排序 目 录 Contents PPT,PDF转存JPEG PDF,PPT转存 数字格式不同 带来的问题 修改排序程序 修改后的代码 修改后输出结果 总 结

 

§01 文件排序 一、PPT,PDF转存JPEG

  通常情况下,需要将PDF,PPT文件形成图片导入CSDN作为文档存储。

1、PDF,PPT转存数字格式不同

  但是PDF,PPT在转存成JPEG文件的时候,文件名称命名不统一。对于PDF文件,它的文件后缀数字是等长的数字,比如对100页之内的文件, 最后的数字则是以“_0x”为标注。

▲ 图1.1.1 PDF文件存储为JPEG时文件名称

▲ 图1.1.1 PDF文件存储为JPEG时文件名称

  而PPT文件在转存成JPEG文件的时候,它的文件后缀中的数字是不定长的,而是从1 开始自然增长。

▲ 图1.1.2 PPT文件转存成JPEG文件后缀数字编码方式

▲ 图1.1.2 PPT文件转存成JPEG文件后缀数字编码方式

2、带来的问题

  在使用ppt2csdn将目录中的文件发送到CSDN的Markdown编辑器的时候,排序对于PDF文件是正确的。但是对于PPT的数字编码方式出现问题。

(1)排序Python代码 def picdir2csdn(dirstr, width, sideflag): ispicfile = lambda s : 1 if s.split('.')[-1].upper() == 'JPG' or \ s.split('.')[-1].upper() == 'BMP' or \ s.split('.')[-1].upper() == 'PNG' else 0 pptimages = [s for s in os.listdir(dirstr) if ispicfile(s) == 1] s = sorted(pptimages, reverse=False) printf('Total Page Number : %d'%len(s)) for f in s: fname = os.path.join(dirstr, f) printf(fname) # pasteimg2csdn(fname, width, sideflag) # time.sleep(.5) (2)输出结果

  下面是排序输出结果,可以看到如果按照这个顺序,将JPEG导入CSDN的Markdown编辑器,会出现顺序错位。

Total Page Number : 35 D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片1.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片10.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片11.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片12.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片13.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片14.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片15.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片16.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片17.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片18.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片19.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片2.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片20.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片21.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片22.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片23.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片24.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片25.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片26.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片27.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片28.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片29.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片3.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片30.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片31.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片32.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片33.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片34.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片35.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片4.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片5.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片6.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片7.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片8.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片9.JPG 二、修改排序程序

  下面需要对于ppt2csdn中的文件排序进行修改。

1、修改后的代码

  在对文件名进行排序前,先提取文件名中最后的数字字符串。然后在根据该字符串的大小进行文件名称的排序。

#------------------------------------------------------------ def filename2num(fs): for i in range(len(fs)): if not fs[-(i+1):].isdigit(): return int(fs[-i:]) return int(fs) #------------------------------------------------------------ def picdir2csdn(dirstr, width, sideflag): ispicfile = lambda s : 1 if s.split('.')[-1].upper() == 'JPG' or \ s.split('.')[-1].upper() == 'BMP' or \ s.split('.')[-1].upper() == 'PNG' else 0 pptimages = [s for s in os.listdir(dirstr) if ispicfile(s) == 1] # s = sorted(pptimages, reverse=False) pagenum = [filename2num(ss.split('.')[0]) for ss in pptimages] pagesort = sorted(zip(pptimages, pagenum), reverse=False, key=lambda x:x[1]) s = [p[0] for p in pagesort] printf('Total Page Number : %d'%len(s)) for f in s: fname = os.path.join(dirstr, f) printf(fname) pasteimg2csdn(fname, width, sideflag) time.sleep(.5) 2、修改后输出结果

  下面是修改后文件打印排序。

Total Page Number : 35 D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片1.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片2.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片3.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片4.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片5.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片6.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片7.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片8.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片9.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片10.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片11.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片12.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片13.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片14.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片15.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片16.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片17.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片18.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片19.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片20.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片21.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片22.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片23.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片24.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片25.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片26.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片27.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片28.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片29.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片30.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片31.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片32.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片33.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片34.JPG D:\Temp\JPEG\人工智能助力全国大学智能车竞赛\幻灯片35.JPG

 

※ 总  结 ※

  修改了ppt2csdn中存在的文件名称排序错误。通过提取文件名称最后面的数字字符串来作为文件排序的关键字,可以消除PPT文件在转存成JPEG文件时对应的数码编码方式。

● 相关图表链接:

图1.1.1 PDF文件存储为JPEG时文件名称图1.1.2 PPT文件转存成JPEG文件后缀数字编码方式 #!/usr/local/bin/python # -*- coding: gbk -*- #============================================================ # PPT2CSDN.PY -- by Dr. ZhuoQing 2021-01-04 # # Usage: ppt2csdn w# s# #2 # w800 : Set the width =800 # s0,s1 : No side, has side # #2 : filename01 # # Note: Copy the PPT file or related image directory into clipboard, # then use ppt2csdn to paste all the image into csdn. # # Install: pip install python-pptx-interface # #============================================================ from head import * from PIL import Image, ImageDraw from io import BytesIO import win32clipboard from pptx_tools import utils #------------------------------------------------------------ num0len = 1 # For file tail number 01 length #------------------------------------------------------------ def extractfile(fname, imagedir=r'd:\temp\pptpng'): if os.path.isdir(imagedir): for f in os.listdir(imagedir): os.remove(os.path.join(imagedir, f)) pptfile = fname png_folder = imagedir utils.save_pptx_as_png(png_folder, pptfile, overwrite_folder=True) #------------------------------------------------------------ csdn_window = '写文章-CSDN博客' #------------------------------------------------------------ def send_to_clipboard(clip_type, data): win32clipboard.OpenClipboard() win32clipboard.EmptyClipboard() win32clipboard.SetClipboardData(clip_type, data) win32clipboard.CloseClipboard() #------------------------------------------------------------ def pasteimg2csdn(fname, width=800, sideflag=1): image = Image.open(fname) if sideflag > 0: draw = ImageDraw.Draw(image) draw.rectangle((0, 0, image.size[0]-1, image.size[1]-1), width=sideflag, outline='#c0c0c0') output = BytesIO() image.convert('RGB').save(output, 'BMP') data = output.getvalue()[14:] output.close() send_to_clipboard(win32clipboard.CF_DIB, data) #-------------------------------------------------------- printf("\a") tspsendwindowkey(csdn_window, 'v', control=1,noreturn=1) time.sleep(2) #-------------------------------------------------------- for i in range(20): time.sleep(1) readdata = tspread() if readdata[2] == 1: break if readdata[7] != 0: break if readdata[8] != 0: exit() if readdata[9] != 0: exit() tspsendwindowkey(csdn_window, 'c', control=1,noreturn=1) if clipboard.paste().find('在这里插入图片描述') >= 0: tspbeep(1500, 200) tspsendwindowkey(csdn_window, 'ac', control=1,noreturn=1) time.sleep(.5) break printf('\a') pastestr = clipboard.paste().split('![在这里插入图片描述](') if len(pastestr) 3: if pptname[0][-4:].isdigit(): prefix = pptname[0][:-4] #-------------------------------------------------------- fname = "%s%d.%s"%(prefix, 1, extstr) if num0len == 2: fname = "%s%02d.%s"%(prefix, 1, extstr) elif num0len == 3: fname = "%s%03d.%s"%(prefix, 1, extstr) elif num0len == 4: fname = "%s%04d.%s"%(prefix, 1, extstr) elif num0len == 5: fname = "%s%05d.%s"%(prefix, 1, extstr) elif num0len == 6: fname = "%s%06d.%s"%(prefix, 1, extstr) elif num0len == 7: fname = "%s%07d.%s"%(prefix, 1, extstr) elif num0len == 8: fname = "%s%08d.%s"%(prefix, 1, extstr) elif num0len == 9: fname = "%s%09d.%s"%(prefix, 1, extstr) elif num0len == 10: fname = "%s%010d.%s"%(prefix, 1, extstr) fname = os.path.join(imgdir, fname) if num0len == 1: if not os.path.isfile(fname): fname = "%s%02d.%s"%(prefix, 1, extstr) fname = os.path.join(imgdir, fname) num0len = 2 if not os.path.isfile(fname): fname = "%s%03d.%s"%(prefix, 1, extstr) fname = os.path.join(imgdir, fname) num0len = 3 if not os.path.isfile(fname): fname = "%s%04d.%s"%(prefix, 1, extstr) fname = os.path.join(imgdir, fname) num0len = 4 if not os.path.isfile(fname): for f in pptimages: fname = os.path.join(imgdir, f) printf(fname) pasteimg2csdn(fname, width, sideflag) time.sleep(.5) return #-------------------------------------------------------- for i in range(len(pptimages)): fname = "%s%d.%s"%(prefix, i+1, extstr) if num0len == 2: fname = "%s%02d.%s"%(prefix, i+1, extstr) elif num0len == 3: fname = "%s%03d.%s"%(prefix, i+1, extstr) elif num0len == 4: fname = "%s%04d.%s"%(prefix, i+1, extstr) elif num0len == 5: fname = "%s%05d.%s"%(prefix, i+1, extstr) elif num0len == 6: fname = "%s%06d.%s"%(prefix, i+1, extstr) elif num0len == 7: fname = "%s%07d.%s"%(prefix, i+1, extstr) elif num0len == 8: fname = "%s%08d.%s"%(prefix, i+1, extstr) elif num0len == 9: fname = "%s%09d.%s"%(prefix, i+1, extstr) elif num0len == 10: fname = "%s%010d.%s"%(prefix, i+1, extstr) fname = os.path.join(imgdir, fname) printf(fname) if not os.path.isfile(fname): printf('Can not file %s!'%fname) break pasteimg2csdn(fname, width, sideflag) time.sleep(.5) #-------------------------------------------------------- #------------------------------------------------------------ def filename2num(fs): for i in range(len(fs)): if not fs[-(i+1):].isdigit(): return int(fs[-i:]) return int(fs) #------------------------------------------------------------ def picdir2csdn(dirstr, width, sideflag): ispicfile = lambda s : 1 if s.split('.')[-1].upper() == 'JPG' or \ s.split('.')[-1].upper() == 'BMP' or \ s.split('.')[-1].upper() == 'PNG' else 0 pptimages = [s for s in os.listdir(dirstr) if ispicfile(s) == 1] # s = sorted(pptimages, reverse=False) pagenum = [filename2num(ss.split('.')[0]) for ss in pptimages] pagesort = sorted(zip(pptimages, pagenum), reverse=False, key=lambda x:x[1]) s = [p[0] for p in pagesort] printf('Total Page Number : %d'%len(s)) for f in s: fname = os.path.join(dirstr, f) printf(fname) pasteimg2csdn(fname, width, sideflag) time.sleep(.5) #------------------------------------------------------------ filedir = '' tspdropfile2pastetext() filedirsect = clipboard.paste().split() if len(filedirsect) > 0: filedir = filedirsect[0] else: printf("Usage: csdnppt filename[filedir]\a") exit() #------------------------------------------------------------ width=800 sideflag = 1 for s in sys.argv[1:]: if s[0] == '#': num0len = int(s[1:]) elif s[0] == 'w' or s[0] == 'W': width = int(s[1:]) elif s[0] == 's' or s[0] == 'S': sideflag = int(s[1:]) #------------------------------------------------------------ if os.path.isfile(filedir): extractfile(filedir) filedir = r'd:\temp\pptpng' if not os.path.isdir(filedir): printf("Can not find directory : %s"%filedir) #imagedir2csdn(filedir, width, sideflag) picdir2csdn(filedir, width, sideflag) #------------------------------------------------------------ # END OF FILE : PPT2CSDN.PY #============================================================


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3