日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

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

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

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

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

(2)測試庫函數(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)測試函數(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)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
中文字幕成人| 国产一区二区三区探花| 久久中文字幕av| 99精品视频在线观看免费播放| 福利在线免费视频| 国产91精品对白在线播放| 伊人久久视频| 国产精品婷婷| 国产日本久久| 成年男女免费视频网站不卡| 亚洲网站视频| 中文字幕av一区二区三区人| 国产日韩一区二区三区在线| 色乱码一区二区三区网站| 亚洲大全视频| 亚洲精品一二| 丝袜诱惑一区二区| 在线国产日韩| 成人综合一区| 亚洲一区中文| 欧美精品中文字幕亚洲专区| 精品国产中文字幕第一页| 久久久久国产精品一区二区| 影音先锋久久精品| 精品视频自拍| 天堂网在线观看国产精品| 日本不卡一二三区黄网| 色乱码一区二区三区网站| 蜜桃免费网站一区二区三区| 精品视频高潮| 婷婷六月综合| 久久免费影院| 鲁大师成人一区二区三区| 九九99久久精品在免费线bt| 欧美精品自拍| 精品国产一区二| 蜜桃伊人久久| 中文av在线全新| 亚洲v天堂v手机在线| 成人黄色av| 亚洲三级观看| 日韩电影免费网址| 97se亚洲| 欧美网站在线| 中文字幕一区久| 国产欧美日韩在线观看视频| 黄色国产精品| 国产精品不卡| 日本不卡在线视频| 亚洲国产专区校园欧美| 欧美91在线| 亚洲三区欧美一区国产二区| 亚洲涩涩在线| 免费精品一区| 日韩不卡一区二区三区| 亚洲成人三区| 日韩精品诱惑一区?区三区| 国产剧情一区| 日韩福利视频一区| 亚洲一区二区网站| 久久高清免费| 国产黄大片在线观看| 国产免费av一区二区三区| 亚洲精品动态| 免费的成人av| 国产女优一区| 日本国产精品| 国产一区二区亚洲| 欧美国产先锋| 国产精品亚洲片在线播放| 中文字幕亚洲精品乱码| 在线视频免费在线观看一区二区| 亚洲精品88| 国产欧美一区二区三区精品酒店| 久久av影视| 国产亚洲人成a在线v网站| 亚洲精品第一| 亚洲人成亚洲精品| 噜噜噜躁狠狠躁狠狠精品视频 | 日韩在线欧美| 久久精品福利| 日本va欧美va欧美va精品| 视频在线观看国产精品| 黄色日韩精品| 99成人在线| 久久av一区二区三区| 在线亚洲激情| 蜜臀久久99精品久久久久宅男| 亚洲国产日韩欧美在线| 激情自拍一区| 久久高清免费| 黄色av日韩| 视频一区二区欧美| 日韩精品一区第一页| 一区二区三区网站| 亚洲2区在线| 国产亚洲欧美日韩在线观看一区二区| 久久国产三级| 麻豆一区二区在线| 国产一区二区色噜噜| 亚洲午夜天堂| 欧美精品一区二区三区精品| 亚洲一区二区三区四区五区午夜 | 久久久久久免费视频| 久久高清精品| 国产一区二区高清| 偷拍亚洲精品| 欧美激情精品| 久久精品主播| 蜜桃久久av| 日韩av一二三| 红杏一区二区三区| 久久伦理在线| 一本一本久久| 91精品在线免费视频| 麻豆91在线播放| 韩国三级一区| 亚洲综合三区| 国产日韩欧美| 一本大道色婷婷在线| 亚洲在线一区| 国产精品永久| 四虎影视精品| 日韩精品视频在线看| 国产a久久精品一区二区三区| 久久三级福利| 日韩欧美中文字幕在线视频| 精品精品国产三级a∨在线| 99久久久国产精品美女| 在线免费观看亚洲| 精品视频免费| 国产精品日韩| 老司机免费视频一区二区| 久久久久国产精品一区三寸| 一级成人国产| 中文字幕在线视频网站| 日韩精品一二三四| 麻豆精品视频在线观看视频| 激情欧美国产欧美| 91欧美极品| 99精品视频在线| 欧美日韩视频免费看| 精品捆绑调教一区二区三区| 亚洲在线观看| 久久久久免费| 日韩欧美高清一区二区三区| 国产色播av在线| 蜜桃av一区二区| 国产精品午夜av| 国产精品视区| 国产精品不卡| 日韩一二三区在线观看| 日本午夜大片a在线观看| 日本不卡一二三区黄网| 久久婷婷久久| 久久的色偷偷| 蜜臀va亚洲va欧美va天堂| 久久亚洲人体| 久久一二三区| 在线手机中文字幕| 久久国产生活片100| 亚洲在线国产日韩欧美| 美女国产一区二区三区| 久久亚洲欧洲| 欧美在线观看视频一区| 你懂的国产精品| 香蕉久久一区| 婷婷国产精品| 91中文字幕精品永久在线| 日韩午夜视频在线| 91成人网在线观看| 亚洲va中文在线播放免费| 国产精品极品在线观看| 午夜在线一区| 亚洲网站视频| 桃色一区二区| 精品中文在线| 国产伦精品一区二区三区视频 | 亚洲精品伊人| 欧美日韩国产综合网| 日韩av一级| 国产99在线| 日韩1区在线| 国产精品99久久免费观看| 亚州av一区| 中文字幕日韩高清在线| 国产精品三上| 日韩一级精品| 影音先锋久久| 亚洲一区观看| 免费日本视频一区| 免费黄网站欧美| 美国欧美日韩国产在线播放| 欧美在线资源| 日韩视频精品在线观看| 亚洲国产一区二区三区在线播放| 亚洲91视频| 在线一区视频观看| 久久99国产精品视频| 美女视频一区在线观看|