电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python文件排序的方法總結(jié)

瀏覽:44日期:2022-07-11 13:56:21

在python環(huán)境中提供兩種排序方案:用庫(kù)函數(shù)sorted()對(duì)字符串排序,它的對(duì)象是字符;用函數(shù)sort()對(duì)數(shù)字排序,它的對(duì)象是數(shù)字,如果讀取文件的話,需要進(jìn)行處理(把文件后綴名‘屏蔽’)。

(1)首先:我測(cè)試的文件夾是/img/,里面的文件都是圖片,如下圖所示:

python文件排序的方法總結(jié)

(2)測(cè)試庫(kù)函數(shù)sorted(),直接貼出代碼:

import numpy as npimport os img_path=’./img/’ img_list=sorted(os.listdir(img_path))#文件名按字母排序img_nums=len(img_list)for i in range(img_nums): img_name=img_path+img_list[i] print(img_name)

運(yùn)行效果如下:

python文件排序的方法總結(jié)

從圖片可以清晰的看出,文件名是按字符排序的。

(3)測(cè)試函數(shù)sort(),代碼:

import numpy as npimport osimg_path=’./img/’ img_list=os.listdir(img_path)img_list.sort()img_list.sort(key = lambda x: int(x[:-4])) ##文件名按數(shù)字排序img_nums=len(img_list)for i in range(img_nums): img_name=img_path+img_list[i] print(img_name)

運(yùn)行效果如下:

python文件排序的方法總結(jié)

可以看出,文件名是按數(shù)字排序的;順便提下,sort函數(shù)中用到了匿名函數(shù)(key = lambda x:int(x[:-4])),其作用是將后綴名’.jpg’“屏蔽”(因?yàn)椤?jpg’是4個(gè)字符,所以[:-4]的含義是從文件名開始到倒數(shù)第四個(gè)字符為止),具體看python的匿名函數(shù)和數(shù)組取值方式。

實(shí)例擴(kuò)展:

import gzipimport osfrom multiprocessing import Process, Queue, Pipe, current_process, freeze_supportfrom datetime import datetimedef sort_worker(input,output): while True: lines = input.get().splitlines() element_set = {} for line in lines: if line.strip() == ’STOP’: return try: element = line.split(’ ’)[0] if not element_set.get(element): element_set[element] = ’’ except: pass sorted_element = sorted(element_set) #print sorted_element output.put(’n’.join(sorted_element))def write_worker(input, pre): os.system(’mkdir %s’%pre) i = 0 while True: content = input.get() if content.strip() == ’STOP’: return write_sorted_bulk(content, ’%s/%s’%(pre, i)) i += 1def write_sorted_bulk(content, filename): f = file(filename, ’w’) f.write(content) f.close()def split_sort_file(filename, num_sort = 3, buf_size = 65536*64*4): t = datetime.now() pre, ext = os.path.splitext(filename) if ext == ’.gz’: file_file = gzip.open(filename, ’rb’) else: file_file = open(filename) bulk_queue = Queue(10) sorted_queue = Queue(10) NUM_SORT = num_sort sort_worker_pool = [] for i in range(NUM_SORT): sort_worker_pool.append( Process(target=sort_worker, args=(bulk_queue, sorted_queue)) ) sort_worker_pool[i].start() NUM_WRITE = 1 write_worker_pool = [] for i in range(NUM_WRITE): write_worker_pool.append( Process(target=write_worker, args=(sorted_queue, pre)) ) write_worker_pool[i].start() buf = file_file.read(buf_size) sorted_count = 0 while len(buf): end_line = buf.rfind(’n’) #print buf[:end_line+1] bulk_queue.put(buf[:end_line+1]) sorted_count += 1 if end_line != -1: buf = buf[end_line+1:] + file_file.read(buf_size) else: buf = file_file.read(buf_size) for i in range(NUM_SORT): bulk_queue.put(’STOP’) for i in range(NUM_SORT): sort_worker_pool[i].join() for i in range(NUM_WRITE): sorted_queue.put(’STOP’) for i in range(NUM_WRITE): write_worker_pool[i].join() print ’elasped ’, datetime.now() - t return sorted_countfrom heapq import heappush, heappopfrom datetime import datetimefrom multiprocessing import Process, Queue, Pipe, current_process, freeze_supportimport osclass file_heap: def __init__(self, dir, idx = 0, count = 1): files = os.listdir(dir) self.heap = [] self.files = {} self.bulks = {} self.pre_element = None for i in range(len(files)): file = files[i] if hash(file) % count != idx: continue input = open(os.path.join(dir, file)) self.files[i] = input self.bulks[i] = ’’ heappush(self.heap, (self.get_next_element_buffered(i), i)) def get_next_element_buffered(self, i): if len(self.bulks[i]) < 256: if self.files[i] is not None: buf = self.files[i].read(65536) if buf: self.bulks[i] += buf else: self.files[i].close() self.files[i] = None end_line = self.bulks[i].find(’n’) if end_line == -1: end_line = len(self.bulks[i]) element = self.bulks[i][:end_line] self.bulks[i] = self.bulks[i][end_line+1:] return element def poppush_uniq(self): while True: element = self.poppush() if element is None: return None if element != self.pre_element: self.pre_element = element return element def poppush(self): try: element, index = heappop(self.heap) except IndexError: return None new_element = self.get_next_element_buffered(index) if new_element: heappush(self.heap, (new_element, index)) return elementdef heappoppush(dir, queue, idx = 0, count = 1): heap = file_heap(dir, idx, count) while True: d = heap.poppush_uniq() queue.put(d) if d is None: returndef heappoppush2(dir, queue, count = 1): heap = [] procs = [] queues = [] pre_element = None for i in range(count): q = Queue(1024) q_buf = queue_buffer(q) queues.append(q_buf) p = Process(target=heappoppush, args=(dir, q_buf, i, count)) procs.append(p) p.start() queues = tuple(queues) for i in range(count): heappush(heap, (queues[i].get(), i)) while True: try: d, i= heappop(heap) except IndexError: queue.put(None) for p in procs: p.join() return else: if d is not None: heappush(heap,(queues[i].get(), i)) if d != pre_element: pre_element = d queue.put(d)def merge_file(dir): heap = file_heap( dir ) os.system(’rm -f ’+dir+’.merge’) fmerge = open(dir+’.merge’, ’a’) element = heap.poppush_uniq() fmerge.write(element+’n’) while element is not None: element = heap.poppush_uniq() fmerge.write(element+’n’)class queue_buffer: def __init__(self, queue): self.q = queue self.rbuf = [] self.wbuf = [] def get(self): if len(self.rbuf) == 0: self.rbuf = self.q.get() r = self.rbuf[0] del self.rbuf[0] return r def put(self, d): self.wbuf.append(d) if d is None or len(self.wbuf) > 1024: self.q.put(self.wbuf) self.wbuf = []def diff_file(file_old, file_new, file_diff, buf = 268435456): print ’buffer size’, buf from file_split import split_sort_file os.system(’rm -rf ’+ os.path.splitext(file_old)[0] ) os.system(’rm -rf ’+ os.path.splitext(file_new)[0] ) t = datetime.now() split_sort_file(file_old,5,buf) split_sort_file(file_new,5,buf) print ’split elasped ’, datetime.now() - t os.system(’cat %s/* | wc -l’%os.path.splitext(file_old)[0]) os.system(’cat %s/* | wc -l’%os.path.splitext(file_new)[0]) os.system(’rm -f ’+file_diff) t = datetime.now() zdiff = open(file_diff, ’a’) old_q = Queue(1024) new_q = Queue(1024) old_queue = queue_buffer(old_q) new_queue = queue_buffer(new_q) h1 = Process(target=heappoppush2, args=(os.path.splitext(file_old)[0], old_queue, 3)) h2 = Process(target=heappoppush2, args=(os.path.splitext(file_new)[0], new_queue, 3)) h1.start(), h2.start() old = old_queue.get() new = new_queue.get() old_count, new_count = 0, 0 while old is not None or new is not None: if old > new or old is None: zdiff.write(’< ’+new+’n’) new = new_queue.get() new_count +=1 elif old < new or new is None: zdiff.write(’> ’+old+’n’) old = old_queue.get() old_count +=1 else: old = old_queue.get() new = new_queue.get() print ’new_count:’, new_count print ’old_count:’, old_count print ’diff elasped ’, datetime.now() - t h1.join(), h2.join()

到此這篇關(guān)于python文件排序的方法總結(jié)的文章就介紹到這了,更多相關(guān)python文件排序都有哪些方法內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 东莞喷砂机-喷砂机-喷砂机配件-喷砂器材-喷砂加工-东莞市协帆喷砂机械设备有限公司 | 高光谱相机-近红外高光谱相机厂家-高光谱成像仪-SINESPEC 赛斯拜克 | 定量包装机,颗粒定量包装机,粉剂定量包装机,背封颗粒包装机,定量灌装机-上海铸衡电子科技有限公司 | PU树脂_水性聚氨酯树脂_聚氨酯固化剂_聚氨酯树脂厂家_宝景化工 | 讲师宝经纪-专业培训机构师资供应商_培训机构找讲师、培训师、讲师经纪就上讲师宝经纪 | 车牌识别道闸_停车场收费系统_人脸识别考勤机_速通门闸机_充电桩厂家_中全清茂官网 | 挨踢网-大家的导航!| 顺景erp系统_erp软件_erp软件系统_企业erp管理系统-广东顺景软件科技有限公司 | 吹田功率计-长创耐压测试仪-深圳市新朗普电子科技有限公司 | 海尔生物医疗四川代理商,海尔低温冰箱四川销售-成都壹科医疗器械有限公司 | 冷柜风机-冰柜电机-罩极电机-外转子风机-EC直流电机厂家-杭州金久电器有限公司 | 广州番禺搬家公司_天河黄埔搬家公司_企业工厂搬迁_日式搬家_广州搬家公司_厚道搬迁搬家公司 | 老城街小面官网_正宗重庆小面加盟技术培训_特色面馆加盟|牛肉拉面|招商加盟代理费用多少钱 | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 耐高温电缆厂家-远洋高温电缆 | 盘扣式脚手架-附着式升降脚手架-移动脚手架,专ye承包服务商 - 苏州安踏脚手架工程有限公司 | 盐水蒸发器,水洗盐设备,冷凝结晶切片机,转鼓切片机,絮凝剂加药系统-无锡瑞司恩机械有限公司 | 深圳市八百通智能技术有限公司官方网站 | 日本SMC气缸接头-速度控制阀-日本三菱伺服电机-苏州禾力自动化科技有限公司 | 合景一建-无尘车间设计施工_食品医药洁净车间工程装修总承包公司 | 迪威娱乐|迪威娱乐客服|18183620002 | 氮化镓芯片-碳化硅二极管 - 华燊泰半导体 | 海日牌清洗剂-打造带电清洗剂、工业清洗剂等清洗剂国内一线品牌 海外整合营销-独立站营销-社交媒体运营_广州甲壳虫跨境网络服务 | 杭州荣奥家具有限公司-浙江办公家具,杭州办公家具厂 | 威海防火彩钢板,威海岩棉复合板,威海彩钢瓦-文登区九龙岩棉复合板厂 | 睿婕轻钢别墅_钢结构别墅_厂家设计施工报价 | 金属抛光机-磁悬浮抛光机-磁力研磨机-磁力清洗机 - 苏州冠古科技 | 语料库-提供经典范文,文案句子,常用文书,您的写作得力助手 | 不锈钢散热器,冷却翅片管散热器厂家-无锡市烨晟化工装备科技有限公司 | 据信,上课带着跳 D 体验-别样的课堂刺激感受引发网友热议 | 龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司_龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司 | 亮化工程,亮化设计,城市亮化工程,亮化资质合作,长沙亮化照明,杰奥思【官网】 | 杭州网络公司_百度SEO优化-外贸网络推广_抖音小程序开发-杭州乐软科技有限公司 | 小型气象站_便携式自动气象站_校园气象站-竞道气象设备网 | 无锡不干胶标签,卷筒标签,无锡瑞彩包装材料有限公司 | 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 尊享蟹太太美味,大闸蟹礼卡|礼券|礼盒在线预订-蟹太太官网 | 美的商用净水器_美的直饮机_一级代理经销商_Midea租赁价格-厂家反渗透滤芯-直饮水批发品牌售后 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 环氧树脂地坪_防静电地坪漆_环氧地坪漆涂料厂家-地壹涂料地坪漆 环球电气之家-中国专业电气电子产品行业服务网站! | 工程管道/塑料管材/pvc排水管/ppr给水管/pe双壁波纹管等品牌管材批发厂家-河南洁尔康建材 |