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

Program that can find a find a file for you ?

P: n/a
Greetings.

Im trying to write a program that can be run from the command line.
If I want to search for example after a file with the ending .pdf, I should
be able to write in the command line:
python name of my program / the libary to search and what kind of file it
is example a .pdf file
So if my program name was test.py and the library name was library1 and the
test type i wanted to find was, a .pdf file
I should write python test.py /library1 .pdf

I have to use some of the code below, but im very lost, I know that I have
use os, but not quite sure. Does any have any ideas.....

Thanks all

***
# -*- coding: utf-8 -*-
import sys

def useArgument(arg):
if __name__=="__main__":
"""
python argtest.py arg1 arg2 arg3
"""
if len(sys.argv)!=4:
sys.exit("Error, not the right amout of arguments")

for arg in sys.argv:
useArgument(arg)

***
Jul 18 '05 #1
Share this Question
Share on Google+
6 Replies


P: n/a
Peter Hansen wrote:
Im trying to write a program that can be run from the command line.
If I want to search for example after a file with the ending .pdf, I should
be able to write in the command line:
python name of my program / the libary to search and what kind of file it
is example a .pdf file
So if my program name was test.py and the library name was library1 and the
test type i wanted to find was, a .pdf file
I should write python test.py /library1 .pdf

I have to use some of the code below, but im very lost, I know that I have
use os, but not quite sure. Does any have any ideas.....


You should investigate using the standard library module
getopt, or perhaps optparse (a newer one), as they are
designed to handle command line arguments with ease. Doing
it yourself is probably a waste of time.

(By the way, would you consider changing your "From:"
and "Reply-To:" headers to include an initial or something?

Having two Peter Hansens around here could be confusing,
and I've been a frequent contributor so you might find
many people thinking you're me and sending you hate mail
or something, and you wouldn't know why... If you don't
want to do that, I will. I just hope your middle name
doesn't begin with "L"...)

-Peter L Hansen (the regular)
Jul 18 '05 #2

P: n/a
Am Wed, 29 Sep 2004 11:25:39 +0200 schrieb Peter Hansen:
Greetings.

Im trying to write a program that can be run from the command line.
If I want to search for example after a file with the ending .pdf, I should
be able to write in the command line:
python name of my program / the libary to search and what kind of file it
is example a .pdf file
So if my program name was test.py and the library name was library1 and the
test type i wanted to find was, a .pdf file
I should write python test.py /library1 .pdf


Hi,

This is something the "find" command does in a unix environment.

Here is my solution:

You could use this:
find.py your_path 'library1.*\.pdf$'

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
# Python Imports
import os
import re
import sys

def usage():
print """Usage: %s path regex
Print all files or directories with match the regex.

See this URL for the syntax of the regular expressions
http://docs.python.org/lib/re-syntax.html

""" % (os.path.basename(sys.argv[0]))

def visit(regex, dirname, names):
for name in names:
p=os.path.join(dirname, name)
if regex.search(p):
print p
def main():
if len(sys.argv)!=3:
usage()
sys.exit(1)
path=sys.argv[1]
regex=sys.argv[2]
os.chdir(path)
regex=re.compile(regex)
os.path.walk(".", visit, regex)

if __name__=="__main__":
main()

Jul 18 '05 #3

P: n/a
Hi again all.
I allmost did it, just need the line to run the program now, any ideas, my
head hurts, cant think anymore..... Thanks for your help

import sys
import os.path
import os.dir
a = sys.argv[2]
b = sys.argv[3]

def func (bib, end):
c = os.path.dirlist(bib)

for x in c:
d = os.dir.split(x)
if [1] = end
print (bib, end)

if __name__=="__main__":

"Thomas Guettler" <gu*****@thomas-guettler.de> wrote in message
news:pa****************************@thomas-guettler.de...
Am Wed, 29 Sep 2004 11:25:39 +0200 schrieb Peter Hansen:
Greetings.

Im trying to write a program that can be run from the command line.
If I want to search for example after a file with the ending .pdf, I
should
be able to write in the command line:
python name of my program / the libary to search and what kind of file
it
is example a .pdf file
So if my program name was test.py and the library name was library1 and
the
test type i wanted to find was, a .pdf file
I should write python test.py /library1 .pdf


Hi,

This is something the "find" command does in a unix environment.

Here is my solution:

You could use this:
find.py your_path 'library1.*\.pdf$'

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
# Python Imports
import os
import re
import sys

def usage():
print """Usage: %s path regex
Print all files or directories with match the regex.

See this URL for the syntax of the regular expressions
http://docs.python.org/lib/re-syntax.html

""" % (os.path.basename(sys.argv[0]))

def visit(regex, dirname, names):
for name in names:
p=os.path.join(dirname, name)
if regex.search(p):
print p
def main():
if len(sys.argv)!=3:
usage()
sys.exit(1)
path=sys.argv[1]
regex=sys.argv[2]
os.chdir(path)
regex=re.compile(regex)
os.path.walk(".", visit, regex)

if __name__=="__main__":
main()

Jul 18 '05 #4

P: n/a
You didn't almost do it, you are still very far from it. The code you've
written so far is full of mistakes and I'm really not sure even what you are
trying to do.

Instead of writing the whole program in one shot, try to write just
something very small, try it, make it work and then add one more small
thing. For instance, try to run a script with only the first 5 lines that
you wrote and you will find a problem already. Fix that and then add the
function with only its first statement. Invoke the function and you will
find another problem. Fix that.

And so on.

I'm curious though. Is this maybe an assignment for a course that you are
taking?

Dan

"Peter....." <he********@yahoo.com> wrote in message
news:41***********************@nntp03.dk.telia.net ...
Hi again all.
I allmost did it, just need the line to run the program now, any ideas, my
head hurts, cant think anymore..... Thanks for your help

import sys
import os.path
import os.dir
a = sys.argv[2]
b = sys.argv[3]

def func (bib, end):
c = os.path.dirlist(bib)

for x in c:
d = os.dir.split(x)
if [1] = end
print (bib, end)

if __name__=="__main__":

"Thomas Guettler" <gu*****@thomas-guettler.de> wrote in message
news:pa****************************@thomas-guettler.de...
Am Wed, 29 Sep 2004 11:25:39 +0200 schrieb Peter Hansen:
Greetings.

Im trying to write a program that can be run from the command line.
If I want to search for example after a file with the ending .pdf, I
should
be able to write in the command line:
python name of my program / the libary to search and what kind of file
it
is example a .pdf file
So if my program name was test.py and the library name was library1 and
the
test type i wanted to find was, a .pdf file
I should write python test.py /library1 .pdf


Hi,

This is something the "find" command does in a unix environment.

Here is my solution:

You could use this:
find.py your_path 'library1.*\.pdf$'

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
# Python Imports
import os
import re
import sys

def usage():
print """Usage: %s path regex
Print all files or directories with match the regex.

See this URL for the syntax of the regular expressions
http://docs.python.org/lib/re-syntax.html

""" % (os.path.basename(sys.argv[0]))

def visit(regex, dirname, names):
for name in names:
p=os.path.join(dirname, name)
if regex.search(p):
print p
def main():
if len(sys.argv)!=3:
usage()
sys.exit(1)
path=sys.argv[1]
regex=sys.argv[2]
os.chdir(path)
regex=re.compile(regex)
os.path.walk(".", visit, regex)

if __name__=="__main__":
main()


Jul 18 '05 #5

P: n/a
Hi Peter,

On Wed, 29 Sep 2004 11:25:39 +0200, Peter Hansen <he********@yahoo.com> wrote:
Im trying to write a program that can be run from the command line.
If I want to search for example after a file with the ending .pdf, I should
be able to write in the command line:
python name of my program / the libary to search and what kind of file it
is example a .pdf file


I had to do something like this sometime back so I wrote up a general
purpose script that would look for certain types of files and call a
python function, passing the filename as argument to the function.
This function could be any thing that you would care to define (My
script incidentally just rename file with *ill formed* names). This is
roughly the equivalent doing this using the 'find' unix command:

$ find -name "*.ext" -exec (some python function) {} ';'

You can find the function at the ASPN cookbook site:

http://aspn.activestate.com/ASPN/Coo.../Recipe/300411

Hope you find it useful.

Regards
Steve
Jul 18 '05 #6

P: n/a
Thanks for your input.

I solved the last few lines and corrected the errors that was in it.
And it does work.
Stay happy.....

"Steve" <lo******@gmail.com> wrote in message
news:ma**************************************@pyth on.org...
Hi Peter,

On Wed, 29 Sep 2004 11:25:39 +0200, Peter Hansen <he********@yahoo.com>
wrote:
Im trying to write a program that can be run from the command line.
If I want to search for example after a file with the ending .pdf, I
should
be able to write in the command line:
python name of my program / the libary to search and what kind of file
it
is example a .pdf file


I had to do something like this sometime back so I wrote up a general
purpose script that would look for certain types of files and call a
python function, passing the filename as argument to the function.
This function could be any thing that you would care to define (My
script incidentally just rename file with *ill formed* names). This is
roughly the equivalent doing this using the 'find' unix command:

$ find -name "*.ext" -exec (some python function) {} ';'

You can find the function at the ASPN cookbook site:

http://aspn.activestate.com/ASPN/Coo.../Recipe/300411

Hope you find it useful.

Regards
Steve

Jul 18 '05 #7

This discussion thread is closed

Replies have been disabled for this discussion.