Python: выберите и переместите файл на основе критериев в каталоге - PullRequest
0 голосов
/ 30 мая 2019

У меня есть около 10 минут видео и только что извлечено в каждый кадр, поэтому у меня есть более 100 000 изображений в моей папке и переименовано их от 1 до 100 000. Теперь я хочу выбрать 1 из каждых 30 от 1 до 100 000 изображений и переместить их в другую папку. Например: 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

Заранее спасибо за любую помощь!

Ответы [ 3 ]

2 голосов
/ 30 мая 2019

Ваша ошибка говорит о том, что вам нужно преобразовать int в str, прежде чем сложить их вместе.Вы можете использовать

file = file + str(30)

, а затем улучшить свой исходный код.

Или вы можете использовать мою идею ниже.

for idx in range(1, 100000, 30):
   shutil.copyfile(PATH + str(idx), DEST)    
0 голосов
/ 30 мая 2019

"file" в 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)
0 голосов
/ 30 мая 2019

Попробуйте следующий код

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

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