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

path stuff

P: n/a
I am walking some directories looking for a certain filename pattern.
This part works fine, but what if I want to exclude results from a
certain directory being printed?

eg

d:\dir\mydir1\filename.txt <----------I want to
see this one
d:\dir\mydir2\archived\filename.txt <----------I don't want to
see anything in the "archived" directory
d:\dir\mydir2\filename.txt <----------Again, I do
want to see this one

I am having a bit of trouble figuring out how to use the path module
to hack up the path to determine if I am in a subdir I care about. So
either don show me the results from a certain directory or just plain
skip a certain directory.

May 9 '07 #1
Share this Question
Share on Google+
10 Replies


P: n/a
On May 9, 1:11 pm, fscked <fsckedag...@gmail.comwrote:
I am walking some directories looking for a certain filename pattern.
This part works fine, but what if I want to exclude results from a
certain directory being printed?

eg

d:\dir\mydir1\filename.txt <----------I want to
see this one
d:\dir\mydir2\archived\filename.txt <----------I don't want to
see anything in the "archived" directory
d:\dir\mydir2\filename.txt <----------Again, I do
want to see this one

I am having a bit of trouble figuring out how to use the path module
to hack up the path to determine if I am in a subdir I care about. So
either don show me the results from a certain directory or just plain
skip a certain directory.
Hi,

One way to do it would be to grab just the directory path like this:

dirPath = os.path.dirname(path)

and then use and if:

if 'archived' in dirPath:
# skip this directory

That should get you closer to the answer anyway.

Mike

May 9 '07 #2

P: n/a
En Wed, 09 May 2007 15:11:06 -0300, fscked <fs*********@gmail.com>
escribió:
I am walking some directories looking for a certain filename pattern.
This part works fine, but what if I want to exclude results from a
certain directory being printed?
Using os.walk you can skip undesired directories entirely:

for dirpath, dirnames, filenames in os.walk(starting_dir):
if "archived" in dirnames:
dirnames.remove("archived")
# process filenames, typically:
for filename in filenames:
fullfn = os.path.join(dirpath, filename)
...

--
Gabriel Genellina

May 10 '07 #3

P: n/a
On May 9, 7:02 pm, "Gabriel Genellina" <gagsl-...@yahoo.com.arwrote:
En Wed, 09 May 2007 15:11:06 -0300, fscked <fsckedag...@gmail.com
escribió:
I am walking some directories looking for a certain filename pattern.
This part works fine, but what if I want to exclude results from a
certain directory being printed?

Using os.walk you can skip undesired directories entirely:

for dirpath, dirnames, filenames in os.walk(starting_dir):
if "archived" in dirnames:
dirnames.remove("archived")
# process filenames, typically:
for filename in filenames:
fullfn = os.path.join(dirpath, filename)
...

--
Gabriel Genellina
OK, this is on Winbloze and it keeps giving me "The directory name is
invalid: u"blahblahblah" with double backslashies everywhere. I am
currently trying to figure out how to make those go away. I shall
check back in a bit.

thanks for all the help so far. :)

May 10 '07 #4

P: n/a
On May 10, 10:41 am, fscked <fsckedag...@gmail.comwrote:
On May 9, 7:02 pm, "Gabriel Genellina" <gagsl-...@yahoo.com.arwrote:


En Wed, 09 May 2007 15:11:06 -0300, fscked <fsckedag...@gmail.com
escribió:
I am walking some directories looking for a certain filename pattern.
This part works fine, but what if I want to exclude results from a
certain directory being printed?
Using os.walk you can skip undesired directories entirely:
for dirpath, dirnames, filenames in os.walk(starting_dir):
if "archived" in dirnames:
dirnames.remove("archived")
# process filenames, typically:
for filename in filenames:
fullfn = os.path.join(dirpath, filename)
...
--
Gabriel Genellina

OK, this is on Winbloze and it keeps giving me "The directory name is
invalid: u"blahblahblah" with double backslashies everywhere. I am
currently trying to figure out how to make those go away. I shall
check back in a bit.

thanks for all the help so far. :)- Hide quoted text -

- Show quoted text -
ok, got the backslashies fixed, not I want it to print just a single
line for each matching filename and dirpath, but it prints 3... hmm...

May 10 '07 #5

P: n/a
On May 10, 12:45 pm, fscked <fsckedag...@gmail.comwrote:
On May 10, 10:41 am, fscked <fsckedag...@gmail.comwrote:


On May 9, 7:02 pm, "Gabriel Genellina" <gagsl-...@yahoo.com.arwrote:
En Wed, 09 May 2007 15:11:06 -0300, fscked <fsckedag...@gmail.com
escribió:
I am walking some directories looking for a certain filename pattern.
This part works fine, but what if I want to exclude results from a
certain directory being printed?
Using os.walk you can skip undesired directories entirely:
for dirpath, dirnames, filenames in os.walk(starting_dir):
if "archived" in dirnames:
dirnames.remove("archived")
# process filenames, typically:
for filename in filenames:
fullfn = os.path.join(dirpath, filename)
...
--
Gabriel Genellina
OK, this is on Winbloze and it keeps giving me "The directory name is
invalid: u"blahblahblah" with double backslashies everywhere. I am
currently trying to figure out how to make those go away. I shall
check back in a bit.
thanks for all the help so far. :)- Hide quoted text -
- Show quoted text -

ok, got the backslashies fixed, not I want it to print just a single
line for each matching filename and dirpath, but it prints 3... hmm...- Hide quoted text -

- Show quoted text -
Nevermind, I am indentationally challenged. I was printing under the
for dirpath, dirname, filename part and had to unindent uno time.

It works as desired now, thanks!

May 10 '07 #6

P: n/a
On May 10, 1:43 pm, fscked <fsckedag...@gmail.comwrote:
On May 10, 12:45 pm, fscked <fsckedag...@gmail.comwrote:


On May 10, 10:41 am, fscked <fsckedag...@gmail.comwrote:
On May 9, 7:02 pm, "Gabriel Genellina" <gagsl-...@yahoo.com.arwrote:
En Wed, 09 May 2007 15:11:06 -0300, fscked <fsckedag...@gmail.com
escribió:
I am walking some directories looking for a certain filename pattern.
This part works fine, but what if I want to exclude results from a
certain directory being printed?
Using os.walk you can skip undesired directories entirely:
for dirpath, dirnames, filenames in os.walk(starting_dir):
if "archived" in dirnames:
dirnames.remove("archived")
# process filenames, typically:
for filename in filenames:
fullfn = os.path.join(dirpath, filename)
...
--
Gabriel Genellina
OK, this is on Winbloze and it keeps giving me "The directory name is
invalid: u"blahblahblah" with double backslashies everywhere. I am
currently trying to figure out how to make those go away. I shall
check back in a bit.
thanks for all the help so far. :)- Hide quoted text -
- Show quoted text -
ok, got the backslashies fixed, not I want it to print just a single
line for each matching filename and dirpath, but it prints 3... hmm...-Hide quoted text -
- Show quoted text -

Nevermind, I am indentationally challenged. I was printing under the
for dirpath, dirname, filename part and had to unindent uno time.

It works as desired now, thanks!- Hide quoted text -

- Show quoted text -
ok, I lied, it is still doing the archived folders. Here is the code:

import os, sys
from path import path

myfile = open("boxids.txt", "r", 0)
for line in myfile:
d = 'D:\\Dir\\' + path(line.strip())
for f in d.walkfiles('*Config*.xml'):
for dirpath, dirnames, filenames in os.walk(d):
if "Archived" in dirnames:
dirnames.remove("Archived") #skip this directory
print f
print 'Done'
when it does the print f it still shows me the dirs i don't want to
see.

any more ideas?

TIA

May 10 '07 #7

P: n/a
En Thu, 10 May 2007 19:04:30 -0300, fscked <fs*********@gmail.com>
escribió:
ok, I lied, it is still doing the archived folders. Here is the code:

import os, sys
from path import path

myfile = open("boxids.txt", "r", 0)
for line in myfile:
d = 'D:\\Dir\\' + path(line.strip())
for f in d.walkfiles('*Config*.xml'):
for dirpath, dirnames, filenames in os.walk(d):
if "Archived" in dirnames:
dirnames.remove("Archived") #skip this directory
print f
print 'Done'
when it does the print f it still shows me the dirs i don't want to
see.
You are walking the directory structure *twice*, using two different
methods at the same time. Also, there is no standard `path` module, and
several implementations around, so it would be a good idea to tell us
which one you use.
If you want to omit a directory, and include just filenames matching a
pattern:

import os, sys, os.path, fnmatch

def findinterestingfiles(root_dir):
for dirpath, dirnames, filenames in os.walk(root_dir):
if "Archived" in dirnames:
dirnames.remove("Archived")
for filename in fnmatch.filter(filenames, '*Config*.xml'):
fullfn = os.path.join(dirpath, filename)
print fullfn

myfile = open("boxids.txt", "r")
for line in myfile:
dirname = os.path.join('D:\\Dir\\', line.strip())
findinterestingfiles(dirname):
myfile.close()

--
Gabriel Genellina

May 11 '07 #8

P: n/a
On May 10, 6:08 pm, "Gabriel Genellina" <gagsl-...@yahoo.com.ar>
wrote:
En Thu, 10 May 2007 19:04:30 -0300, fscked <fsckedag...@gmail.com
escribió:


ok, I lied, it is still doing the archived folders. Here is the code:
import os, sys
from path import path
myfile = open("boxids.txt", "r", 0)
for line in myfile:
d = 'D:\\Dir\\' + path(line.strip())
for f in d.walkfiles('*Config*.xml'):
for dirpath, dirnames, filenames in os.walk(d):
if "Archived" in dirnames:
dirnames.remove("Archived") #skip this directory
print f
print 'Done'
when it does the print f it still shows me the dirs i don't want to
see.

You are walking the directory structure *twice*, using two different
methods at the same time. Also, there is no standard `path` module, and
several implementations around, so it would be a good idea to tell us
which one you use.
If you want to omit a directory, and include just filenames matching a
pattern:

import os, sys, os.path, fnmatch

def findinterestingfiles(root_dir):
for dirpath, dirnames, filenames in os.walk(root_dir):
if "Archived" in dirnames:
dirnames.remove("Archived")
for filename in fnmatch.filter(filenames, '*Config*.xml'):
fullfn = os.path.join(dirpath, filename)
print fullfn

myfile = open("boxids.txt", "r")
for line in myfile:
dirname = os.path.join('D:\\Dir\\', line.strip())
findinterestingfiles(dirname):
myfile.close()

--
Gabriel Genellina- Hide quoted text -

- Show quoted text -
Should this code work? I get a syntax error and cannot figure out why.

May 11 '07 #9

P: n/a
En Fri, 11 May 2007 13:25:55 -0300, fscked <fs*********@gmail.com>
escribió:
>import os, sys, os.path, fnmatch

def findinterestingfiles(root_dir):
for dirpath, dirnames, filenames in os.walk(root_dir):
if "Archived" in dirnames:
dirnames.remove("Archived")
for filename in fnmatch.filter(filenames, '*Config*.xml'):
fullfn = os.path.join(dirpath, filename)
print fullfn

myfile = open("boxids.txt", "r")
for line in myfile:
dirname = os.path.join('D:\\Dir\\', line.strip())
findinterestingfiles(dirname):
myfile.close()
Should this code work? I get a syntax error and cannot figure out why.
Sorry, remove the spurious : after findinterestingfiles(dirname) and it
should work fine.

--
Gabriel Genellina

May 12 '07 #10

P: n/a
On May 9, 1:11 pm, fscked <fsckedag...@gmail.comwrote:
I am walking some directories looking for a certain filename pattern.
This part works fine, but what if I want to exclude results from a
certain directory being printed?
You might find this thread helpful

http://tinyurl.com/2guk3l

Note how the backup dirs are excluded.

Highly recommend Python Cookbook, too.

rd

May 12 '07 #11

This discussion thread is closed

Replies have been disabled for this discussion.