簡體   English   中英

循環瀏覽列表中的文件並移動指定的文件(Python)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM