In article <[EMAIL PROTECTED]>, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote:
> #!/usr/bin/python > > from os import * > > chdir("/home/chainlynx/Desktop/Music") > for artist in listdir(getcwd()): > print "===ARTIST: "+artist > chdir(artist) > for album in listdir(getcwd()): > print "---ALBUM: "+album > print "CWD: " + getcwd() > chdir(album) ######ERROR ON THIS > LINE > for string in listdir(album): ... > Traceback (most recent call last): > File "/home/chainlynx/workspace/PyTest/src/pypack/__init__.py", line > 12, in ? > for string in listdir(album): > OSError: [Errno 2] No such file or directory: 'Album1' To start with, note that your traceback implicates the listdir() on line 12, not the chdir() before it. This listdir() uses the same parameter as that preceding chdir(), that appears to be your problem. One of your problems, anyway. You're doing a lot of downwards chdirs, but no upwards, which is going to limit the extent of your directory traversal. The "from os import *" is a terrible idea, where did you get that? "os" has a lot of identifiers in it that tend to collide with other namespaces. "open" is a classic example. Don't do that, with "os" or generally any module. As a more general direction, it would be a good idea to look into standard library functions, e.g., os.path.walk > P.S. Bonus points: is there any way to bash shell script this on the > command line instead (recursively)? Depends on what you want it to do, but maybe something like find . -name \*.mp3 -exec $HOME/bin/cvt .mp4 {} \; where cvt would be something like #!/bin/sh case $1:$2 in .mp4:*.mp3) mp3_to_mp4 $2 ${2%.mp3}.mp4 ;; ... You'd have to think about it. Donn Cave, [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list