Python easy-organizer
Explanation
Here is a simple code that I wrote years ago to organize easily several files in subdirectories according to their names (using regular expressions). Sorry for the mistakes I could have made... I hope you find it useful.
Code
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by por Noelia Sales Montes
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation, either version 3 of the License, or any later version.
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
# You should have received a copy of the GNU General Public License along with
# this program. If not, see <http://www.gnu.org/licenses/>.
# Contact:
# noelia.salesmontes@gmail.com
"""
Python script that organizes the working directory files according to their
name.
CORRECT USAGE: python organize.py [-v] [-h|-s|-f]
* -v -> enable verbose mode
* -h o --help
* -s o --secure -> copy files
* -f o --force -> force the movement of files
If file already exists, it is deleted
"""
import sys
import os
import shutil
import getopt
import glob
# Regular expressions of files to process
__exreg__ = ['*.mp3', '*.hs', '*.py']
# Directories for each of the above files
__dirs__ = ['/home/nessa/Music', '/home/nessa/Haskell', '/home/nessa/Python']
# Options
__verbose__ = False
__secure__ = False
__force__ = False
def usage():
"""
Print usage
"""
print "USAGE: python organize.py [-v] [-h|-s|-f]"
def organize():
"""
Main function which classifies files according to the regular expressions
"""
indice = 0
for exp in __exreg__:
if __verbose__ == True:
print "Regular expression: %s" % exp
# Find files that match with the regular expression
for __f in glob.glob(exp):
move(__f, indice)
indice += 1
def move(__f, __ind):
"""
Files movement
"""
# Ensures the directory exists
if not os.path.exists(__dirs__[__ind]):
if __verbose__ == True:
print "Creating %s" % __dirs__[__ind]
os.makedirs(__dirs__[__ind])
if __verbose__ == True:
print "%s => %s" % (__f, __dirs__[__ind])
# Copy (__secure__ mode) or move
try:
if __secure__ == True:
shutil.copy(__f, __dirs__[__ind])
else:
shutil.move(__f, __dirs__[__ind])
except shutil.Error:
# If there is any problem, move is forced
if __force__ == True:
try:
os.remove(os.path.join(__dirs__[__ind], __f))
print os.path.join(__dirs__[__ind], __f)
if __secure__ == True:
shutil.copy(__f, __dirs__[__ind])
else:
shutil.move(__f, __dirs__[__ind])
except shutil.Error:
print "%s wasn't moved" % __f
else:
print "%s wasn't moved'" % __f
if __name__ == "__main__":
try:
__opts__, __args__ = getopt.getopt(sys.argv[1:],
'shvf', ["secure", "help",
"__force__"])
except getopt.GetoptError, __err:
# Print error and help
print str(__err)
usage()
sys.exit(2)
# Identify options
for o, a in __opts__:
if o == "-v":
__verbose__ = True
elif o in ("-h", "--help"):
usage()
sys.exit()
elif o in ("-s", "--secure"):
__secure__ = True
elif o in ("-f", "--__force__"):
__force__ = True
else:
assert False, "Unsupported option"
organize()
Written by Noelia Sales Montes
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Python
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#