Hej!
När jag fotograferar så tar jag både raw och jpg bilder. När jag gått igenom alla bilderna så raderar jag de jpgar som ser dåliga ut. Sedan så raderar jag alla tillhörande rawfiler.
Jag skulle vilja ha ett skript som gör detta åt mig och har funnit detta:
https://gist.github.com/pklaus/4271012
Med en liten modifiering så att det passar mitt filformat (nef) så känns det som det borde kunna göra jobbet. Men jag får ett felmeddelande:
File "/home/mats/bin/remove_raw.py", line 15
sys.stderr.write(line + '\n')
Någon som kan hjälpa mig att lista ut vad som är fel?
radera raw filer
- Osprey
- Inlägg: 6310
- Blev medlem: 06 apr 2008, 00:09
- OS: Ubuntu
- Ort: Göteborg/Mölndal/Falkenberg
- Kontakt:
Re: radera raw filer
Programmet så som det ser ut på githuben är helt ok, det skulle vara bra om du kan lägga in en kopia av ditt ändrade program som du försöker köra också. Python är väldigt känsligt för en del smådetaljer som inte spelar någon roll i andra språk.
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
- Dimi
- Inlägg: 703
- Blev medlem: 24 dec 2006, 00:04
- OS: Ubuntu
- Utgåva: Vet inte/ingen utgåva passar
- Ort: Stockholm
Re: radera raw filer
Jag förstår. Här är koden. Min enda förändring är den gällande filformatet på rad 35. Där jag ändrar cr2 till nef.
Kod: Markera allt
#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
"""
Written on 2012-12-12 by Philipp Klaus <philipp.l.klaus →AT→ web.de>.
Check <https://gist.github.com/4271012> for newer versions.
Also check <https://gist.github.com/3155743> for a tool to
rename JPEGs according to their EXIF shot time.
"""
import argparse, os, errno, re, shutil, sys
def stderr(line):
sys.stderr.write(line + '\n')
sys.stderr.flush()
def delete(files, backup_folder=None, verbose=True):
if len(files) == 0: return
if backup_folder:
try:
os.mkdir(backup_folder)
except OSError, e:
if not e.errno == errno.EEXIST:
raise
for filename in files:
if verbose: print "Moving %s to %s." % (filename, backup_folder)
shutil.move(filename, os.path.join(backup_folder))
else:
for filename in files:
if verbose: print "Deleting %s." % (filename,)
os.remove(filename)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Cleanup of leftover raw image files (*.NEF).')
parser.add_argument('-n', '--no-backup', action='store_true',
help='Don\'t backup orphaned raw images - delete them immediately.')
parser.add_argument('-b', '--backup-folder', default='raw_orphans',
help='Folder to move orphaned raw images to.')
parser.add_argument('-q', '--quiet', action='store_true',
help='Silence the less important output of this tool.')
parser.add_argument('folder', metavar='CHECK_FOLDER', default='./', nargs='?',
help='Folder to check for raw images. Defaults to the current working directory')
args = parser.parse_args()
verbose = not args.quiet
raw_images, jpeg_images_bare_names = [], []
all_files = list(os.listdir(args.folder))
# sort files into raw and jpeg files
for filename in all_files:
# The file name of raw image ends with cr2 for Canon cameras
if re.match(r'(.*)\.[cC][rR]2$', filename):
raw_images.append(filename)
if re.match(r'(.*)\.[jJ][pP][eE]?[gG]$', filename):
jpeg_images_bare_names.append(os.path.splitext(filename)[0])
# Check if there is a jpeg for each raw image
orphans = []
for raw_image in raw_images:
if os.path.splitext(raw_image)[0] not in jpeg_images_bare_names:
orphans.append(raw_image)
if len(raw_images) + len(jpeg_images_bare_names) == 0:
if verbose: stderr("No images found. Are you sure you wanted to check '%s' for orphaned RAW images?" %
(args.folder,))
sys.exit(2)
elif len(raw_images) == 0:
if verbose: print "No RAW images found, but %i JPEGs. Won't do anything now." % (
len(jpeg_images_bare_names),)
sys.exit(0)
elif len(orphans) == 0:
if verbose: print "%i RAW images found, and %i JPEGs but no orphans. Won't do anything now." % (
len(raw_images), len(jpeg_images_bare_names))
sys.exit(0)
backup_folder = None if args.no_backup else os.path.join(args.folder,args.backup_folder)
delete([os.path.join(args.folder,orphan) for orphan in orphans], backup_folder=backup_folder, verbose=verbose)
- Johnny Rosenberg
- Inlägg: 1256
- Blev medlem: 23 jun 2007, 16:18
- OS: Ubuntu
- Utgåva: 22.10 Kinetic Kudu
- Kontakt:
Re: radera raw filer
Ta även en titt på raderna 50-51…
- Osprey
- Inlägg: 6310
- Blev medlem: 06 apr 2008, 00:09
- OS: Ubuntu
- Ort: Göteborg/Mölndal/Falkenberg
- Kontakt:
Re: radera raw filer
Det där fungerar inte alls, indenteringarna är ytterst viktigt för Python, med rak vänstermarginal är det helkört. I Python styrs programstrukturen helt av indenteringarna!Dimi skrev:Jag förstår. Här är koden.
[...]
För att ta rad 15 som exempel så måste det se ut så här:
Kod: Markera allt
def stderr(line):
sys.stderr.write(line + '\n')
sys.stderr.flush()
Kod: Markera allt
def stderr(line):
sys.stderr.write(line + '\n')
sys.stderr.flush()
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
- Johnny Rosenberg
- Inlägg: 1256
- Blev medlem: 23 jun 2007, 16:18
- OS: Ubuntu
- Utgåva: 22.10 Kinetic Kudu
- Kontakt:
Re: radera raw filer
Inte för att jag har något med saken att göra, men jag misstänker att indenteringarna försvunnit när vederbörande klistrat in koden här. Själv brukar jag alltid göra nya indenteringar för att göra koden lättläst, men alla är inte så nogräknade och petiga som jag…Osprey skrev:Det där fungerar inte alls, indenteringarna är ytterst viktigt för Python, med rak vänstermarginal är det helkört. I Python styrs programstrukturen helt av indenteringarna!Dimi skrev:Jag förstår. Här är koden.
[...]
Just Python har jag aldrig använt, mer än testat det lite, men jag har läst lite om det och också förstått att indenteringarna är avgörande. Dessutom måste de väl göras med mellanslag, stämmer det? Lite synd i så fall, personligen föredrar jag tab. Lättare att jobba med, i alla fall i de textredigerare jag använt. Och tar mindre plats, men det spelar mindre roll.
- Dimi
- Inlägg: 703
- Blev medlem: 24 dec 2006, 00:04
- OS: Ubuntu
- Utgåva: Vet inte/ingen utgåva passar
- Ort: Stockholm
Re: radera raw filer
Tack för hjälpen! Det var det som var problemet. Skönt att det löste sig så lätt.
Väldigt trevligt script nu när det fungerar :-).
Väldigt trevligt script nu när det fungerar :-).