Shutil.move не удаляет исходные файлыPython

Программы на Python
Ответить
Anonymous
 Shutil.move не удаляет исходные файлы

Сообщение Anonymous »

Здесь новичок в Python. Я написал, как мне казалось, довольно простой сценарий для извлечения метаданных даты создания из фотографий и видео и перемещения их в новую папку в зависимости от года и месяца. Я использую PIL для изображений и hachoir для метаданных видео.

По большей части у меня все работает, пока я не использую Shutil.move. В этот момент все файлы jpg прекрасно переносятся в новые папки. Но все видео КОПИРУЮТСЯ. Исходные файлы остаются в исходной папке.

Я предполагаю, что какой-то процесс, который я вызываю во время выполнения сценария, все еще обращается к видеофайлу и не позволяет его удалить. Может ли кто-нибудь сказать мне, что я испортил и как я могу освободить эти видеофайлы для перемещения?

=====================

import os.path, time, sys, shutil
from PIL import Image
from PIL.ExifTags import TAGS
from hachoir_core.error import HachoirError
from hachoir_core.cmd_line import unicodeFilename
from hachoir_parser import createParser
from hachoir_core.tools import makePrintable
from hachoir_metadata import extractMetadata
from hachoir_core.i18n import getTerminalCharset

def get_field (exif,field) :
for (k,v) in exif.iteritems():
if TAGS.get(k) == field:
return v

for picture in os.listdir(os.getcwd()):

if picture.endswith(".jpg") or picture.endswith(".JPG"):
print picture
rawMetadata = Image.open(picture)._getexif()
datetime = get_field(rawMetadata, 'DateTime')
datedict = {'year' : datetime[0:4], 'month' : datetime[5:7]}
target = datedict['year']+'-'+ datedict['month']

if not os.path.isdir(target):
newdir = os.mkdir(target)
if picture not in target:
shutil.move(picture, target)

if picture.endswith('.mov') or picture.endswith('.MOV') or \
picture.endswith('mp4') or picture.endswith('.MP4'):

picture, realname = unicodeFilename(picture), picture
parser = createParser(picture, realname)
rawMetadata = extractMetadata(parser)
text = rawMetadata.exportPlaintext()
datedict = {'year' : text[4][17:21], 'month' : text[4][22:24]}

target = datedict['year']+'-'+ datedict['month']

dest = os.path.join(target, picture)

if not os.path.isdir(target):
newdir = os.mkdir(target)

if picture not in target:
try:
shutil.move(picture, dest)
except WindowsError:
pass


Подробнее здесь: https://stackoverflow.com/questions/217 ... urce-files
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»