[英]Loop through files in list and move specified one (Python)
我有這段代碼,向我顯示了我提供的文件夾中的所有.tif文件。
timestr = datetime.now().strftime('%Y%m%d-%H%M%S%f')
ex_area_files = []
tif_files = glob.glob('C:\\Users\\Bob\\Desktop\\Folder\\' + str(timestr) + '\\EXTRACTED\\*.tif')
ex_area_files = [tif_files]
print(ex_area_files)
如何將某些指定的移動到另一個文件夾? 我的意思是,我想移動所有.tif文件,這些文件的width * height結果小於/大於某個值。
我嘗試的是循環遍歷數組,並在設置條件后移動文件。 所有結果都是導致整個系統阻塞的循環失敗:)
它跟隨...
image = cv2.imread('image.jpg')
height = np.size(image, 0)
width = np.size(image, 1)
condition = (height*width) > 9600
如何將ex_area_files
(我的.tif數組)設置為cv2可以讀取的文件目錄? 而且,更重要的是,如何一次設置文件?
滿足條件的文件(值為320 * 30px的圖像)應移動到另一個目錄。 程序確定文件可以移動后如何處理?
謝謝
提示:這是另一段代碼之后的下一步: 從流程(OpenCV,Python)中排除某些尺寸的圖像在這種情況下,請查看ex_area14.png
。 我想移動一系列這樣的文件(但以.tif格式..)
我建議使用shutil
移動文件。 要移動它們,您可以使用shutil.copy()
-我個人使用shutil.copy2()
所以嘗試這樣的事情:
import shutil
import opencv
for files in ex_area_files:
if files (PLACE YOUR CONDITION HERE):
`shutil.copy('PATH_OF_file', 'PATH_OF_WHERE_TO_DROP')
編輯:
所以我個人喜歡os.walk()
,在這里我遍歷文件,如果文件以.tif
結尾,我將以imread
讀取文件,獲取高度和寬度,並檢查是否滿足該條件。 您必須提供要將文件復制到的位置。 (記下.replace()
-由於某種原因而被imread
,例如像/
而不是\\
)。
import shutil
import opencv
import os
for root, dirs, files in os.walk(r'FOLDER HERE'):
for file in files:
if file.lower().endswith('.tif'):
image = cv2.imread(root.replace('\\', '/') + '/' +file
height = np.size(image, 0)
width = np.size(image, 1)
if height*width > 9600:
shutil.copy(root.replace('\\', '/') + '/' +file, 'PATH_OF_WHERE_TO_DROP')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.