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

您的位置:首頁技術文章
文章詳情頁

python文件排序的方法總結

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

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

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

python文件排序的方法總結

(2)測試庫函數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)

運行效果如下:

python文件排序的方法總結

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

(3)測試函數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])) ##文件名按數字排序img_nums=len(img_list)for i in range(img_nums): img_name=img_path+img_list[i] print(img_name)

運行效果如下:

python文件排序的方法總結

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

實例擴展:

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()

到此這篇關于python文件排序的方法總結的文章就介紹到這了,更多相關python文件排序都有哪些方法內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久精品国产亚洲aⅴ| 蜜臀久久99精品久久久画质超高清| 国产成人精品三级高清久久91| 欧美一区二区三区久久| 国产精品啊啊啊| 欧美综合另类| 中文另类视频| 国产麻豆久久| 99久久www免费| 在线日韩av| 成人精品中文字幕| 亚洲高清av| 久久夜色精品| 日韩二区三区在线观看| 欧美日韩亚洲一区二区三区在线| 欧美中文一区| 精品午夜av| 亚洲不卡av不卡一区二区| 精品中文字幕一区二区三区av| 日韩午夜视频在线| 久久国产精品成人免费观看的软件| 韩日一区二区| 亚洲精品91| 91国内精品| 不卡福利视频| 亚洲欧美视频| 日韩av午夜在线观看| 免费亚洲婷婷| 毛片在线网站| 久久免费视频66| 青青国产91久久久久久| 激情婷婷综合| 综合一区av| 国产精品成久久久久| 美女一区网站| 欧美一级一区| 夜夜精品视频| 久久亚洲色图| 免费日韩av片| 美女久久网站| 日韩一区二区三区免费视频| 91精品国产自产在线丝袜啪| 久久三级毛片| 亚洲高清影视| 国产精品亚洲二区| 欧美中文字幕一区二区| 91精品视频一区二区| 成人日韩精品| 视频一区日韩| 欧美日韩免费看片| 天堂精品久久久久| 黄色在线网站噜噜噜| 蜜桃久久av| 麻豆免费精品视频| 女人天堂亚洲aⅴ在线观看| 亚洲精品国产日韩| 国产夫妻在线| 色综合视频一区二区三区日韩 | 欧美高清不卡| 欧美日韩1区2区3区| 狠狠干综合网| 日本a级不卡| 天堂日韩电影| 久久麻豆精品| 久久高清免费| 99国产精品99久久久久久粉嫩| 99国产精品视频免费观看一公开| 精品五月天堂| 麻豆精品av| 久久久一二三| 日韩在线黄色| 99久精品视频在线观看视频| 欧美国产小视频| 免费看精品久久片| 欧美国产另类| 视频一区在线播放| 欧美精品aa| 国产一区二区高清| 国产精品久久久久蜜臀 | 成人午夜毛片| 日本精品国产| 国产资源在线观看入口av| 久久国产人妖系列| 香蕉精品999视频一区二区| 国产精品专区免费| 国产一区 二区| 日韩在线卡一卡二| 久久亚洲国产| 欧美国产一级| 国产精品探花在线观看| 日韩在线一二三区| 欧美亚洲精品在线| 欧美国产极品| 18国产精品| 亚洲三级国产| 一区在线视频观看| 日韩伦理福利| 精品亚洲精品| 国产精品亚洲综合久久| 亚洲精一区二区三区| 黄色成人精品网站| 久久久成人网| 免费在线小视频| 国产videos久久| 国产精品videosex极品| 日本中文字幕视频一区| 国产亚洲毛片在线| 欧美日韩国产一区二区三区不卡| 亚洲啊v在线| 色综合狠狠操| 欧美在线精品一区| 国产精品美女久久久久久不卡| 精品国产黄a∨片高清在线| 国产亚洲欧洲| 亚洲国内欧美| 欧美日韩国产高清电影| 精品一区亚洲| 亚洲免费在线| 在线一区视频| 黑丝一区二区三区| 亚洲男女自偷自拍| 男人的天堂久久精品| 亚洲电影在线| 亚洲成人va| 日产精品一区| 国产精品久久久久av电视剧| 国产极品模特精品一二| 97久久超碰| 欧美一级网址| 国产精品一区免费在线| 国产精品视频一区二区三区| 国产精品亚洲四区在线观看| 九九九精品视频| 欧美激情另类| 日韩在线视频精品| 久久久久午夜电影| 99re国产精品| 免费观看在线综合色| 亚洲精品日本| 国产麻豆一区| 久久精品网址| 国产精品久久观看| 久久精品中文| 一级欧洲+日本+国产| 亚洲精品乱码| 国产高清日韩| 天堂√中文最新版在线| 亚洲二区在线| 亚洲精品乱码| 久久99影视| 136国产福利精品导航网址| 免费日韩视频| 国产日韩一区| 日韩欧美二区| 中文亚洲欧美| 91免费精品国偷自产在线在线| 欧美精品三级在线| 国内在线观看一区二区三区| 亚洲电影在线| 日韩欧美三区| 精品三级国产| 久久美女精品| 日韩高清国产一区在线| 国产一区一一区高清不卡| 日本久久二区| 日韩三级精品| 亚洲综合日本| 国产精品一级| 亚洲网址在线观看| 激情综合自拍| 天堂√8在线中文| 国产精品调教| 日韩欧美中文字幕电影| 97成人超碰| 老色鬼久久亚洲一区二区| 国产亚洲高清视频| 国产欧美日韩精品高清二区综合区| 久久免费视频66| 91超碰国产精品| 日韩av电影一区| 日韩精品电影| 在线看片日韩| 成人一区而且| 亚洲午夜久久| 超级白嫩亚洲国产第一| 亚洲欧美日韩国产一区二区| 日韩国产91| 久久精品青草| 国产精品一区高清| 午夜影院欧美| 久久精品国产一区二区| 亚洲尤物在线| 国产精品麻豆久久| 日韩中文字幕一区二区高清99| 久久毛片亚洲| 欧美一级网站| 欧美日韩精品一本二本三本 | 国产精品高颜值在线观看| 蜜臀久久99精品久久久画质超高清 | 免费毛片在线不卡|