Created
July 13, 2014 16:11
-
-
Save MartinThoma/472a672311d8d80955a8 to your computer and use it in GitHub Desktop.
Script to rename all jpg files in a folder
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
import os | |
from os.path import isfile, join | |
from math import log10, ceil | |
def get_files(folder): | |
onlyfiles = [f for f in os.listdir(folder) if isfile(join(folder, f))] | |
image_files = filter(lambda f: f.endswith('.jpg') or f.endswith('.JPG'), | |
onlyfiles) | |
image_files = sorted(image_files) | |
return image_files | |
def main(folder, name, start, print_only): | |
image_files = get_files(folder) | |
digits = int(ceil(log10(start + len(image_files)))) | |
rename = [] | |
number = start | |
for filename in image_files: | |
new_name = "%s-%s.jpg" % (name, str(number).zfill(digits)) | |
rename.append({'old': filename, 'new': new_name}) | |
number += 1 | |
for file_dict in rename: | |
print("%s -> %s" % (file_dict['old'], file_dict['new'])) | |
if not print_only: | |
os.rename(file_dict['old'], file_dict['new']) | |
if __name__ == '__main__': | |
from argparse import ArgumentParser | |
parser = ArgumentParser() | |
# Add more options if you like | |
parser.add_argument("-n", "--name", | |
dest="name", | |
required=True, | |
help="name to use in [name]-[number].jpg scheme", | |
metavar="NAME") | |
parser.add_argument("-f", "--folder", | |
dest="folder", | |
default=".", | |
help="folder to look in", | |
metavar="FOLDER") | |
parser.add_argument("-s", "--start", | |
dest="start", | |
default=1, | |
type=int, | |
help="number to start with", | |
metavar="NUM") | |
parser.add_argument("-p", "--printonly", | |
dest="print_only", | |
default=False, | |
action="store_true", | |
help="only print changes that would be done") | |
args = parser.parse_args() | |
main(args.folder, args.name, args.start, args.print_only) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment