Skip to content

Instantly share code, notes, and snippets.

@MartinThoma
Created July 13, 2014 16:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MartinThoma/472a672311d8d80955a8 to your computer and use it in GitHub Desktop.
Save MartinThoma/472a672311d8d80955a8 to your computer and use it in GitHub Desktop.
Script to rename all jpg files in a folder
#!/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