On 02/02/13 08:24, Scurvy Scott wrote:
One last question on this topic..

I'd like to call the files and the string form the command line like

Python whatever.py STRINGTOSEARCH NEWFILE FILETOOPEN

My understanding is that it would be accomplished as such

import sys

myString = sys.argv[1]
filetoopen = sys.argv[2]
newfile = sys.argv[3]


ETC ETC CODE HERE

Is this correct/pythonic? Is there a more recommended way? Am I retarded?



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

Reply via email to