parse_and_rename_files.py

#! /usr/bin/python3
# =================================================================
# Automate parsing and renaming files
# from: www.youtube.com/watch?v=ve2pmm5jqmI
#
# Sample file name format: "Earth - Our Solar System - #4.txt"
# =================================================================

import os

test_only = True

# ---- working directory

os.chdir("./testfiles")

# ---- test environment

print(os.getcwd())

##for f in os.listdir('./'):
##    print(f)

for f in os.listdir('./'):
    ##print(os.path.splitext(f))
    f_name,f_ext = os.path.splitext(f)
    ##print(f_name)
    ##print(f_name.split('-'))
    f_title, f_course, f_num = f_name.split('-')
    ##print(f_title)
    ##print(f_course)
    ##print(f_num)
    ##print('{}-{}-{}{}'.format(f_num, f_course, f_title, f_ext)
    f_title = f_title.strip()
    f_course = f_course.strip()
    f_num = f_num.strip()[1:].zfill(2)
    ##print('{}-{}-{}{}'.format(f_num, f_course, f_title, f_ext)
    ##print('{}-{}{}'.format(f_num, f_title, f_ext)
    new_name = '{}-{}{}'.format(f_num, f_title, f_ext)

    print("{}\n    --> {}".format(f,new_name))

    if not test_only:
        os.rename(f, new_name)