I'd suggest having the newfile open after outfile is defined also a close
statement on newfile - or use it with 'with' such as:
<unchanged code except removing "newfile = open('outfile', 'w')" line>
... and replace the last line like so:
with open(outfile, 'w') as newfile:
    main(mystring, infile, newfile)

(and looking muchly improved, well done)
Nick


On Fri, Feb 1, 2013 at 8:57 PM, Scurvy Scott <etanes...@gmail.com> wrote:

> And just for the records sake, this is what I've gotten and you guys
> should see obviously that you helped a lot and I learned a thing or
> two so I won't have to ask the same silly questions next time:
>
>
>
>
> def main(mystring, infile, outfile):
>     with open('infile', 'r') as inF:
>                 for index, line in enumerate(inF):
>                         if myString in line:
>                                 newfile.write("string %s found on line
> #%d" (line, index))
> print "complete."
>
>
> if __name__ == '__main__':
>    import sys
>    newfile = open('outfile', 'w')
>    help_text = "usage: python scanfile.py STRINGTOSEARCH
> IMPORTFILENAME OUTPUTFILENAME"
>    if '-h' in sys.argv or '--help' in sys.argv or len(sys.argv) == 0:
>            print (help_text)
>            sys.exit()
>    myString = sys.argv[1]
>    infile = sys.argv[2]
>    outfile = sys.argv[3]
>    main(mystring, infile, outfile)
>
> Look right to you? Looks okay to me, except maybe the three ORs in the
> information line, is there a more pythonic way to accomplish that
> task?
>
> Scott
>
> On Fri, Feb 1, 2013 at 8:31 PM, Scurvy Scott <etanes...@gmail.com> wrote:
> >> Best practice is to check if your program is being run as a script
> before
> >> doing anything. That way you can still import the module for testing or
> >> similar:
> >>
> >>
> >> def main(mystring, infile, outfile):
> >>    # do stuff here
> >>
> >>
> >> if __name__ == '__main__':
> >>    # Running as a script.
> >>    import sys
> >>    mystring = sys.argv[1]
> >>    infile = sys.argv[2]
> >>    outfile = sys.argv[3]
> >>    main(mystring, infile, outfile)
> >>
> >>
> >>
> >> Best practice for scripts (not just Python scripts, but *any* script)
> is to
> >> provide help when asked. Insert this after the "import sys" line,
> before you
> >> start processing:
> >>
> >>    if '-h' in sys.argv or '--help' in sys.argv:
> >>        print(help_text)
> >>        sys.exit()
> >>
> >>
> >>
> >> If your argument processing is more complicated that above, you should
> use
> >> one of the three argument parsing modules that Python provides:
> >>
> >> http://docs.python.org/2/library/getopt.html
> >> http://docs.python.org/2/library/optparse.html (deprecated -- do not
> use
> >> this for new code)
> >> http://docs.python.org/2/library/argparse.html
> >>
> >>
> >> getopt is (in my opinion) the simplest to get started, but the weakest.
> >>
> >> There are also third-party argument parsers that you could use. Here's
> one
> >> which I have never used but am intrigued by:
> >>
> >> http://docopt.org/
> >>
> >>
> >>
> >> --
> >> Steven
> >>
> >> _______________________________________________
> >> Tutor maillist  -  Tutor@python.org
> >> To unsubscribe or change subscription options:
> >> http://mail.python.org/mailman/listinfo/tutor
> >
> > Steve-
> >  thanks a lot for showing me the if __name__ = main part
> > I've often wondered how it was used and it didn't make sense until I
> > saw it in my own code if that makes any sense.
> > Also appreciate the help on the "instructional" side of things.
> >
> > One question related to the instruction aspect- does this make sense to
> you?
> >
> > If len(sys.argv) == 0:
> >     print "usage: etc etc etc"
> >
> >
> >
> > Nick, Dave, and Steve, again, you guys are awesome. Thanks for all your
> help.
> >
> > Scott
> _______________________________________________
> Tutor maillist  -  Tutor@python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to