Works now, thanks!
On Thu, Jul 31, 2014 at 6:57 PM, C Smith <illusiontechniq...@gmail.com> wrote: > woops, I see it pathname != filename > > On Thu, Jul 31, 2014 at 6:55 PM, C Smith <illusiontechniq...@gmail.com> wrote: >>>for track, filename in enumerate(os.listdir(directory), 1): >> It seems kinda counter-intuitive to have track then filename as >> variables, but enumerate looks like it gets passed the filename then >> track number. Is that correct and just the way enumerate works, a >> typo, or am I missing something else here? >> >> It is an ffmpeg error I am getting. >> ffmpeg just gives its usual build information and the error is (for >> each song title in the directory): >> songTitleIsHere.flac: no such file or directory >> >> So it looks like it is close to working because it finds the correct >> file names, but doesn't recognize it for some reason. >> Here is how I put in your code >> import os, subprocess >> directory = '/absolute/path/goes/here' >> for track, filename in enumerate(os.listdir(directory), 1): >> pathname = os.path.join(directory, filename) >> subprocess.call(['ffmpeg', '-i', filename, str(track)+'.mp3']) >> >> So it goes to the right place, because every song title is listed out, >> ffmpeg or the shell just don't recognize them correctly. >> >> On Thu, Jul 31, 2014 at 6:35 PM, Steven D'Aprano <st...@pearwood.info> wrote: >>> You may have already have solved your problem, unfortunately my >>> emails are coming in slowly and out of order, but I have a suggestion: >>> >>> On Thu, Jul 31, 2014 at 03:53:48PM -0400, C Smith wrote: >>>> I am on OSX, which needs to escape spaces in filenames with a backslash. >>> >>> Same as any other Unix, or Linux, or, indeed, Windows. >>> >>>> There are multiple files within one directory that all have the same >>>> structure, one or more characters with zero or more spaces in the >>>> filename, like this: >>>> 3 Song Title XYZ.flac. >>>> I want to use Python to call ffmpeg to convert each file to an .mp3. >>>> So far this is what I was trying to use: >>>> import os, subprocess >>>> track = 1 >>>> for filename in os.listdir('myDir'): >>>> subprocess.call(['ffmpeg', '-i', filename, str(track)+'.mp3']) >>>> track += 1 >>> >>> I believe that your problem is *not* the spaces, but that you're passing >>> just the filename and not the directory. subprocess will escape the >>> spaces for you. Also, let Python count the track number for you. Try >>> this: >>> >>> >>> directory = '/path/to/the/directory' >>> for track, filename in enumerate(os.listdir(directory), 1): >>> pathname = os.path.join(directory, filename) >>> subprocess.call(['ffmpeg', '-i', filename, str(track)+'.mp3']) >>> >>> >>> I expect something like that will work. You should be able to pass >>> either an absolute path (beginning with /) or a relative path starting >>> from the current working directory. >>> >>> If this doesn't work, please show the full error that you receive. If it >>> is a Python traceback, copy and paste the whole thing, if it's an ffmpeg >>> error, give as much information as you can. >>> >>> >>> >>> -- >>> Steven >>> _______________________________________________ >>> Tutor maillist - Tutor@python.org >>> To unsubscribe or change subscription options: >>> https://mail.python.org/mailman/listinfo/tutor _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor