Home » Category » Python

Python: Program that can find a find a file for you ?

206| Wed, 26 Dec 2007 23:49:00 GMT| peterhansen| Comments (6)
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)

***

Keywords & Tags: program, find, file, python

URL: http://programming.itags.org/python/64361/
 
«« Prev - Next »» 6 helpful answers below.
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)

theregularpeterhansen | Wed, 26 Dec 2007 23:51:00 GMT |

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()

thomasguettler | Wed, 26 Dec 2007 23:52:00 GMT |

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" <guettli...thomas-guettler.de> wrote in message
news:pan.2004.09.29.13.18.28.288793...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()

peter | Wed, 26 Dec 2007 23:53:00 GMT |

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...." <helten0007...yahoo.com> wrote in message
news:415abff2$0$13728$ba624c82...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" <guettli...thomas-guettler.de> wrote in message
> news:pan.2004.09.29.13.18.28.288793...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()
>>

danperl | Wed, 26 Dec 2007 23:54:00 GMT |

Hi Peter,

On Wed, 29 Sep 2004 11:25:39 +0200, Peter Hansen <helten0007...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/Co...n/Recipe/300411

Hope you find it useful.

Regards
Steve

steve | Wed, 26 Dec 2007 23:55:00 GMT |

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" <lonetwin...gmail.com> wrote in message
news:mailman.4077.1096467878.5135.python-list...python.org...
> Hi Peter,
> On Wed, 29 Sep 2004 11:25:39 +0200, Peter Hansen <helten0007...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/Co...n/Recipe/300411
> Hope you find it useful.
> Regards
> Steve

peter | Wed, 26 Dec 2007 23:56:00 GMT |

Python Hot Answers

Python New questions

Python Related Categories