import os
from itertools import product
def mkdir(pathExpr):
"""
example of pathExpr: src/{main,test}/{java,resources}
creates following folders:
- src/main/java
- src/main/resources
- src/test/java
- src/test/resources
"""
for foldercombi in product(*(getFolderParts(expression) for expression in pathExpr.split('/'))):
dirname = '/'.join(foldercombi)
try:
os.makedirs(dirname)
except OSError:
if os.path.exists(dirname):
pass
def getFolderParts(expression):
if expression[0] == '{' and expression[-1] == '}':
return [part for part in expression[1:-1].split(',')]
else:
return [expression]
mkdir('C:/tmp/src/{main,test}/{java,resources}')
Wednesday, May 23, 2012
Mimicking mkdir Unix in Python
I got inspired by a tweet from @paulgreg today: 'Man. I love Unix shell : mkdir -p src/{main,test}/{java,resources} #unix #shell'.
I wanted to find out how difficult this would be to implement in Python and here is a first working draft.
Labels:
Python
Subscribe to:
Post Comments (Atom)
Really nice!
ReplyDeleteHowever, you don't need using expression[1:length-1], use expression[1:-1] instead.
Yep... you're totally right. Fixed it. Bad habid from programming in javascript ;-)
ReplyDelete