我大约有10分钟的视频,并且刚刚提取到每一帧中,所以我的文件夹中有超过100,000个图像,并将它们从1重命名为100,000。现在,我要从1到100,000张图像中每30张中选择1张,然后将它们移动到另一个文件夹。例如:1、31、61、91、121、151、181等。
到目前为止,这是我的代码:
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
在此先感谢您的帮助!
答案 0 :(得分:2)
您的错误提示您需要将int转换为str,然后再将它们加在一起。您可以使用
file = file + str(30)
然后稍后改善原始代码。
或者您可以在下面使用我的想法。
for idx in range(1, 100000, 30):
shutil.copyfile(PATH + str(idx), DEST)
答案 1 :(得分:0)
尝试以下代码
PATH = '/Folder1/'
DEST = './Folder2/'
l = os.listdir(PATH)
file = 1
for file in l[::30]:
shutil.copyfile(PATH, DEST)
答案 2 :(得分:0)
for file in os.listdir(PATH)
中的“文件”是字符串,因此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)