Python:根据目录中的条件选择并移动文件

2024-06-15 13:35:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有大约10分钟的视频,只是提取到每一帧,所以我有超过100000的图像在我的文件夹中,并将它们从1重命名为100000。现在,我想从1到100000的图像中每30个选择一个,并将它们移到另一个文件夹。例如:1、31、61、91121151181等等

这是我目前的代码:

import os
import shutil

PATH = './Folder1/'
DEST = './Folder2/'

file = 1

for file in os.listdir(PATH):
    file = file + 30
    shutil.copyfile(PATH, DEST)

但它给了我以下错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-b08091703697> in <module>
      9 # Get a list of files in the current working directory
     10 for file in os.listdir(PATH):
---> 11     file = file + 30
     12     shutil.copyfile(PATH, DEST)

TypeError: can only concatenate str (not "int") to str

提前感谢您的帮助


Tags: pathin图像import文件夹for视频os
3条回答

您的错误是,在将int和str相加之前,需要将它们转换为str。你可以用

file = file + str(30)

然后在以后改进您的原始代码

或者你可以用我下面的想法

for idx in range(1, 100000, 30):
   shutil.copyfile(PATH + str(idx), DEST)    

for file in os.listdir(PATH)中的“file”是字符串,因此file = file + 30无效。 您应该尝试:

import os
import shutil

PATH = './Folder1/'
DEST = './Folder2/'

filenames = os.listdir(PATH)

for i in range(1, len(filenames), 30):
    shutil.copyfile(PATH + filenames[i], DEST)

请尝试以下代码

PATH = '/Folder1/'
DEST = './Folder2/'
l = os.listdir(PATH)
file = 1

for file in l[::30]:
    shutil.copyfile(PATH, DEST)

相关问题 更多 >