程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

[python] elegant list splitting, list equal division, list generation sublist

編輯:Python

下面代碼會將List的files分為List[List[…],…]的樣子,每隔1000個就是一個子列表,最後除不盡的那個子列表的元素個數 小於等於 1000.

files=[files[i:i + 1000] for i in range(0, len(files), 1000)]

多進程應用,下面的代碼使用多進程執行overwrite函數,將所有jpg和png文件重寫或者刪除.

import multiprocessing
import os
import cv2
def listPathAllfiles(dirname):
result = []
for maindir, subdir, file_name_list in os.walk(dirname):
for filename in file_name_list:
apath = os.path.join(maindir, filename)
result.append(apath)
return result
def overwrite(files1):
for fname in files1:
try:
if fname.endswith(".jpg") or fname.endswith(".png"):
img = cv2.imread(fname)
cv2.imwrite(fname, img)
except:
os.remove(fname)
print(fname)
if __name__ == '__main__':
root = r"/ssd/xiedong/datasets/multilabel"
files = listPathAllfiles(root)
p = multiprocessing.Pool() # 創建一個包含2個進程的進程池
# split files to several parts
for i in range(0, len(files), 1000):
p.apply_async(func=overwrite, args=(files[i:i + 1000],)) # 往池子裡加一個異步執行的子進城
p.close() # 等子進程執行完畢後關閉進程池
p.join() # 主進程等待

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved