Huh, that is quite an annoyance about changing the order though. Any ideas about that? I will look into it further in the meantime...
On Thu, Jul 31, 2014 at 6:57 PM, C Smith <illusiontechniq...@gmail.com> wrote: > 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