By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,539 Members | 1,289 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,539 IT Pros & Developers. It's quick & easy.

os.path.dirname adds unremoveable spaces?

P: n/a
Here's the code I'm using:

####################################
import os, string
for root, dirs, files in os.walk('/home/_Comedy'):
for file in files:
str = os.path.dirname(file)
print root, str.strip(), "/", file.strip()

####################################
The problem is that even after using strip(), it still prints a list like
this:
/home/_Comedy/ISIRTA / ISIRTA - 1966.03.28 - s02e03 - Ali Baba.mp3
/home/_Comedy/ISIRTA / ISIRTA - 1966.04.04 - s02e04 - Nelson.mp3
/home/_Comedy/ISIRTA / ISIRTA - 1966.04.18 - s02e06 - Angus Prune.mp3
^^^^^
^^^^^
I can't remove these mystery spaces that I'm pointing to no matter what I
try. Neither the directories or filenames have spaces before or after
them. Even if they did, they should've been removed when I used the strip
command.

Any ideas?
Jul 18 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
And just as expected, after an hour of searching google groups for an
answer, I post the question only to figure it out 10 seconds later.
Sheesh!

I used os.path.join and all is well.


Jason <as***********@asldfkjasldkfjasdf.com> wrote in
news:Xn*************************@24.93.43.119:
Here's the code I'm using:

####################################
import os, string
for root, dirs, files in os.walk('/home/_Comedy'):
for file in files:
str = os.path.dirname(file)
print root, str.strip(), "/", file.strip()

####################################
The problem is that even after using strip(), it still prints a list
like this:
/home/_Comedy/ISIRTA / ISIRTA - 1966.03.28 - s02e03 - Ali Baba.mp3
/home/_Comedy/ISIRTA / ISIRTA - 1966.04.04 - s02e04 - Nelson.mp3
/home/_Comedy/ISIRTA / ISIRTA - 1966.04.18 - s02e06 - Angus Prune.mp3

^^^^^
^^^^^
I can't remove these mystery spaces that I'm pointing to no matter
what I try. Neither the directories or filenames have spaces before
or after them. Even if they did, they should've been removed when I
used the strip command.

Any ideas?


Jul 18 '05 #2

P: n/a
> > ####################################
import os, string
for root, dirs, files in os.walk('/home/_Comedy'):
for file in files:
str = os.path.dirname(file)
print root, str.strip(), "/", file.strip()

####################################
The problem is that even after using strip(), it still prints a list
like this:
/home/_Comedy/ISIRTA / ISIRTA - 1966.03.28 - s02e03 - Ali Baba.mp3
/home/_Comedy/ISIRTA / ISIRTA - 1966.04.04 - s02e04 - Nelson.mp3
/home/_Comedy/ISIRTA / ISIRTA - 1966.04.18 - s02e06 - Angus Prune.mp3

^^^^^
^^^^^
I can't remove these mystery spaces that I'm pointing to no matter
what I try. Neither the directories or filenames have spaces before
or after them. Even if they did, they should've been removed when I
used the strip command.
And just as expected, after an hour of searching google groups for an
answer, I post the question only to figure it out 10 seconds later.
Sheesh!

I used os.path.join and all is well.


Just to add a couple of notes... You probably shouldn't be using the strip()
function at all. What if the directory or filename does have leading or
trailing spaces? Presumably you would want to keep those when constructing a
full path.

Also, you did figure out that it was the print statement adding the spaces,
right? Try this test:

print 'one', '/', 'two'

and compare the results with this:

print '%s/%s' %( 'one', 'two' )

In the second example, you're giving a single argument to the print
statement, a string that you've already formatted with the % operator.

os.path.join is better for dealing with file paths, of course, but this will
be useful for other things you might want to concatenate and format.

-Mike
Jul 18 '05 #3

P: n/a
That's some great info, thanks. I never actually figured out what was
adding the spaces, so I appreciate your explanation. This is only my third
day of Python.


Just to add a couple of notes... You probably shouldn't be using the
strip() function at all. What if the directory or filename does have
leading or trailing spaces? Presumably you would want to keep those
when constructing a full path.

Also, you did figure out that it was the print statement adding the
spaces, right? Try this test:

print 'one', '/', 'two'

and compare the results with this:

print '%s/%s' %( 'one', 'two' )

In the second example, you're giving a single argument to the print
statement, a string that you've already formatted with the % operator.

os.path.join is better for dealing with file paths, of course, but
this will be useful for other things you might want to concatenate and
format.

-Mike


Jul 18 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.