Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环浏览列表中的文件并移动指定的文件(Python)_Python_Arrays_Opencv_File Io - Fatal编程技术网

循环浏览列表中的文件并移动指定的文件(Python)

循环浏览列表中的文件并移动指定的文件(Python),python,arrays,opencv,file-io,Python,Arrays,Opencv,File Io,我有这段代码,它显示了我给定文件夹中的所有.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文件

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文件

我尝试的是在数组中循环,并在设置密码后移动文件。所有结果都是循环失败,阻塞了所有系统:)

接下来是

image = cv2.imread('image.jpg')
height = np.size(image, 0)
width = np.size(image, 1)

condition = (height*width) > 9600
如何将
ex_area_files
(my.tif array)设置为cv2可以读取的文件目录?更重要的是,如何立即设置文件

满足条件的文件(值为320*30px的图像)应移动到另一个目录。在程序决定可以移动文件后,如何执行此操作

谢谢

提示:这是另一段代码之后的下一步: 在本例中,请查看
ex_area14.png
。我想移动一系列这样的文件(但采用.tif格式)

我建议使用来移动文件。要移动它们,您可以使用-我个人使用
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
出于某种原因,喜欢像
/
这样的斜杠,而不是
\


谢谢对舒蒂尔来说似乎还可以。。但是如何使用数组(对文件夹中满足条件的每个文件循环)作为文件的路径?不止一个。。感谢you@Link,我更新了我的代码。我没有
.tif
文件,因此无法检查它是否适用于您的特定示例。需要注意的问题是,
image
是否返回为
None
。非常感谢。我会在几个测试,将更新这篇文章和回复。它的工作,只是复制所有的tif文件…似乎条件>9600不工作…我现在正在看它。。。编辑:if条件必须在for循环之外。如果您查看文档,应该会找到一些工具来帮助您获得可以迭代的文件列表,甚至可以找到一些工具来遍历目录。你可能想花些时间来解决这个问题。
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')