pygame music, cant read mp3?

J. Cliff Dyer jcd at unc.edu
Mon May 5 11:11:35 EDT 2008


On Mon, 2008-05-05 at 07:32 -0700, globalrev wrote:
> On 5 Maj, 16:29, globalrev <skanem... at yahoo.se> wrote:
> > On 5 Maj, 16:09, globalrev <skanem... at yahoo.se> wrote:
> >
> >
> >
> > > On 5 Maj, 14:17, "Wojciech Walczak" <wojtek.gminick.walc... at gmail.com>
> > > wrote:
> >
> > > > 2008/5/5, globalrev <skanem... at yahoo.se>:
> >
> > > > > pygame.mixer.music.load('C:/Python25/myPrograms/pygameProgs/example1.mp3')
> >
> > > > Are you sure that:
> >
> > > > os.path.exists('C:/Python25/myPrograms/pygameProgs/example1.mp3') == True?
> >
> > > > Check it with python.
> >
> > > > --
> > > > Regards,
> > > > Wojtek Walczakhttp://www.stud.umk.pl/~wojtekwa/
> > > >>> import os
> > > >>> os.path.exists('C:/Python25/myPrograms/pygameProgs/dront.mp3') == True
> >
> > > False
> >
> > > but...it is there....
> >
> > > >>> os.path.exists('C:\Python25\myPrograms\pygameProgs\dront.mp3') == True
> >
> > > False
> >
> > > does it matter if i use / or \? which si recommended?
> >
> > i can find .png image in the same folder and when i just change
> > filename from snake.png to example1.mp3 it is false.
> >
> > i renamed the file once, could that have anything to do with it?
> 
> \\ or \ or / all works.
> 
> 
> the title of the mp3 is a long number still. i mena if i go to
> properties the name is example1.mpg but the title if i go to details
> is stillt he old one.
> 

Now I'm confused.  What is the name of the *file* on the filesystem?
You can verify this using

>>> os.listdir('C:/Python25/myPrograms/pygameProgs')

As for the question of \\ vs. \ vs. /:  Windows will accept forward
slashes, but you may run into trouble later on down the line if windows
treats one of your forward slashes as a command line option.  The native
format is to use backslashes as separators, but backslashes need to be
escaped in python's regular string literals, because of escape
sequences.  Single backslashes seem to be working for you, but that's
only because you've been lucky in not having escape characters following
your backslash.  Particularly, x, n, t, u, and U will cause trouble.
Probably others.

Cut'n'paste example:

$ python
Python 2.4.3 (#1, Dec 11 2006, 11:38:52) 
[GCC 4.1.1 20061130 (Red Hat 4.1.1-43)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> '\efoo'
'\\efoo'
>>> '\dfoo'
'\\dfoo'
>>> '\ufoo'
'\\ufoo'
>>> '\uabcd'
'\\uabcd'
>>> u'\uabcd'
u'\uabcd'
>>> u'\ufoo'
UnicodeDecodeError: 'unicodeescape' codec can't decode bytes in position
0-4: end of string in escape sequence
>>> '\xfoo'
ValueError: invalid \x escape
>>> '\nfoo'
'\nfoo'
>>> print '\nfoo'

foo
>>>

Notice that the \ gets doubled (escaped) automatically by python in many
of the instances, but not for the \n, and an exception gets raised for
\u (in unicode strings only), and for \x (in regular strings too).  It's
safer just to escape your strings yourself.  So 'C:\\foo' is always
better than 'C:\foo', even though the latter may sometimes work.  Better
still is to create a list of directories, and use os.path.join(dirlist)
as follows:

directory = ['C:','Python25','myPrograms','pygameProgs','dront.mp3']
os.path.join(directory)

Then python can worry about the gritty details, and you don't have to.

-- 
Oook,
J. Cliff Dyer
Carolina Digital Library and Archives
UNC Chapel Hill




More information about the Python-list mailing list