Seqanswers Leaderboard Ad

Collapse

Announcement

Collapse
No announcement yet.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • getopts in python

    I am new to python, have been working in perl. I am trying to implement getopts in python, but I am failing to understand it.


    I have the below code:
    Code:
    #!/usr/bin/python
    
    from Bio import SeqIO
    import sys, getopt
    
    def main(argv):
       
       for i in argv:
        print "This is in for loop "+i
       
       listfile = ''
       pdbfile = ''
       
       try:
          opts, args = getopt.getopt(argv,"pdb:list:",["pfile=","lfile="])
       except getopt.GetoptError:
          print 'check.py -pdb <pdbfile> -list <listfile>'
          
          sys.exit(2)
       for opt, arg in opts:
          
          if opt in ("-pdb","--pfile"):
             pdbfile = arg
             
          if opt in ("-list","--lfile"):
             listfile = arg
       print 'Input file is "', listfile
       print 'Output file is "', pdbfile
    
    if __name__ == "__main__":
       main(sys.argv[1:])
    I run it as:
    ./check.py -pdb ~/Documents/pdb/pdb_seqres.txt -list ~/Documents/pdb/list.txt
    The output I get is:
    This is in for loop -pdb
    This is in for loop /home/sariya/Documents/pdb/pdb_seqres.txt
    This is in for loop -list
    This is in for loop /home/sariya/Documents/pdb/list.txt
    Input file is "
    Output file is "
    when I print arg, I get blank. so it tells me there is not value passed in arg. Why?

    So my pdbfile and listfile are getting blank.
    Please guide.
    Bioinformaticscally calm

  • #2
    You may have your reasons to prefer using the getopts module, but I really like the argparse module, especially in Python 3.4.

    Very simple, intuitive and powerful.

    Comment


    • #3
      In the Python getopts module, short arguments are a single character by default.

      so
      > opts, args = getopt.getopt(argv,"pdb:list:",["pfile=","lfile="])

      should be:
      > opts, args = getopt.getopt(argv,"p:l:",["pfile=","lfile="])

      And your assignment should be then become:

      > if opt in ("-p","--pfile"):
      and
      > if opt in ("-l","--lfile"):

      The drawback of using argparse is that this module is not standard in Python 2.6.
      Last edited by R.W.W.Brouwer; 05-01-2014, 11:49 PM. Reason: typos, typos and more typos

      Comment


      • #4
        @R.W.W.Brouwer - Thank you for pointing out the issue. I didn't know about single character.

        @blancha - I didn't know for argparse. I will try that too.
        Bioinformaticscally calm

        Comment

        Latest Articles

        Collapse

        • seqadmin
          Recent Advances in Sequencing Analysis Tools
          by seqadmin


          The sequencing world is rapidly changing due to declining costs, enhanced accuracies, and the advent of newer, cutting-edge instruments. Equally important to these developments are improvements in sequencing analysis, a process that converts vast amounts of raw data into a comprehensible and meaningful form. This complex task requires expertise and the right analysis tools. In this article, we highlight the progress and innovation in sequencing analysis by reviewing several of the...
          05-06-2024, 07:48 AM
        • seqadmin
          Essential Discoveries and Tools in Epitranscriptomics
          by seqadmin




          The field of epigenetics has traditionally concentrated more on DNA and how changes like methylation and phosphorylation of histones impact gene expression and regulation. However, our increased understanding of RNA modifications and their importance in cellular processes has led to a rise in epitranscriptomics research. “Epitranscriptomics brings together the concepts of epigenetics and gene expression,” explained Adrien Leger, PhD, Principal Research Scientist...
          04-22-2024, 07:01 AM

        ad_right_rmr

        Collapse

        News

        Collapse

        Topics Statistics Last Post
        Started by seqadmin, Yesterday, 02:46 PM
        0 responses
        11 views
        0 likes
        Last Post seqadmin  
        Started by seqadmin, 05-07-2024, 06:57 AM
        0 responses
        13 views
        0 likes
        Last Post seqadmin  
        Started by seqadmin, 05-06-2024, 07:17 AM
        0 responses
        16 views
        0 likes
        Last Post seqadmin  
        Started by seqadmin, 05-02-2024, 08:06 AM
        0 responses
        23 views
        0 likes
        Last Post seqadmin  
        Working...
        X