循环遍历列表中的文件并移动指定的文件(Python)
问题描述:
我有这段代码可以显示我给出的文件夹中的所有.tif文件。循环遍历列表中的文件并移动指定的文件(Python)
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
(我的.tif阵列)的文件的目录从中可以CV2阅读?而且,更重要的是,如何立即设置文件?
满足条件的文件(值为320 * 30px的图像)应移至另一个目录。程序确定文件可以移动后如何执行?
由于
提示:这是这个其他代码段之后的下一个步骤:Exclude images of certain dimensions from process (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')
如果你去翻资料,你会发现工具来帮助你获得的文件列表,你可以遍历甚至工具,让你走过目录。您可能需要花一些时间在[教程](https://docs.python.org/3/tutorial/index.html)上工作。 – wwii