7

I'm learning to use Python and scikit-learn and executed the following block of codes (originally from http://scikit-learn.org/stable/auto_examples/document_classification_20newsgroups.html#example-document-classification-20newsgroups-py) in iPython notebook (using Python 2.7):

from __future__ import print_function
from optparse import OptionParser

# parse commandline arguments
op = OptionParser()
op.add_option("--report",
              action="store_true", dest="print_report",
              help="Print a detailed classification report.")
op.add_option("--chi2_select",
              action="store", type="int", dest="select_chi2",
              help="Select some number of features using a chi-squared test")
op.add_option("--confusion_matrix",
              action="store_true", dest="print_cm",
              help="Print the confusion matrix.")
op.add_option("--top10",
              action="store_true", dest="print_top10",
              help="Print ten most discriminative terms per class"
                   " for every classifier.")
op.add_option("--all_categories",
              action="store_true", dest="all_categories",
              help="Whether to use all categories or not.")
op.add_option("--use_hashing",
              action="store_true",
              help="Use a hashing vectorizer.")
op.add_option("--n_features",
              action="store", type=int, default=2 ** 16,
              help="n_features when using the hashing vectorizer.")
op.add_option("--filtered",
              action="store_true",
              help="Remove newsgroup information that is easily overfit: "
                   "headers, signatures, and quoting.")

(opts, args) = op.parse_args()
if len(args) > 0:
    op.error("this script takes no arguments.")
    sys.exit(1)

Upon running the codes, I encountered the following error:

An exception has occurred, use %tb to see the full traceback.

SystemExit: 2


Usage: -c [options]

-c: error: no such option: -f
To exit: use 'exit', 'quit', or Ctrl-D.

I followed the instruction and executed %tb, and the following appeared:

---------------------------------------------------------------------------
SystemExit                                Traceback (most recent call last)
<ipython-input-1-d44fadf3a28b> in <module>()
     37                    "headers, signatures, and quoting.")
     38 
---> 39 (opts, args) = op.parse_args()
     40 if len(args) > 0:
     41     op.error("this script takes no arguments.")

C:\Anaconda\lib\optparse.pyc in parse_args(self, args, values)
   1399             stop = self._process_args(largs, rargs, values)
   1400         except (BadOptionError, OptionValueError), err:
-> 1401             self.error(str(err))
   1402 
   1403         args = largs + rargs

C:\Anaconda\lib\optparse.pyc in error(self, msg)
   1581         """
   1582         self.print_usage(sys.stderr)
-> 1583         self.exit(2, "%s: error: %s\n" % (self.get_prog_name(), msg))
   1584 
   1585     def get_usage(self):

C:\Anaconda\lib\optparse.pyc in exit(self, status, msg)
   1571         if msg:
   1572             sys.stderr.write(msg)
-> 1573         sys.exit(status)
   1574 
   1575     def error(self, msg):

SystemExit: 2

I understand that optparse has been deprecated in favour of argparse, but as I wanted to understand the tutorial block by block, I was hoping I can run the codes within iPython notebook to get a feel of how it works. It seems that someone else had this problem previously but there wasn't a solution proposed.

Is there a way to address this error so I can run the tutorial codes from within iPython notebook?

2
  • Possible duplicate of SystemExit: 2 error when calling parse_args() Commented Feb 15, 2017 at 14:03
  • In my case, my code works in other IDE (same computer) and Jupyter notebook in another computer Commented Aug 31, 2017 at 1:12

3 Answers 3

2

You can add the arguments you need as a list of strings

(opts, args) = op.parse_args(["--report"])
Sign up to request clarification or add additional context in comments.

Comments

2

[quick solution] Add an dummy parser argument in the code

op.add_option('-f')

Comments

0

As you can see " error: no such option: -f " so you have to add:

op.add_option("-f", required=False)

This will work in your case:

from __future__ import print_function
from optparse import OptionParser

# parse commandline arguments
op = OptionParser()
op.add_option("--report",
          action="store_true", dest="print_report",
          help="Print a detailed classification report.")
op.add_option("--chi2_select",
          action="store", type="int", dest="select_chi2",
          help="Select some number of features using a chi-squared test")
op.add_option("--confusion_matrix",
          action="store_true", dest="print_cm",
          help="Print the confusion matrix.")
op.add_option("--top10",
          action="store_true", dest="print_top10",
          help="Print ten most discriminative terms per class"
               " for every classifier.")
op.add_option("--all_categories",
          action="store_true", dest="all_categories",
          help="Whether to use all categories or not.")
op.add_option("--use_hashing",
          action="store_true",
          help="Use a hashing vectorizer.")
op.add_option("--n_features",
          action="store", type=int, default=2 ** 16,
          help="n_features when using the hashing vectorizer.")
op.add_option("--filtered",
          action="store_true",
          help="Remove newsgroup information that is easily overfit: "
               "headers, signatures, and quoting.")
op.add_option("-f", required=False)

(opts, args) = op.parse_args()
    if len(args) > 0:
    op.error("this script takes no arguments.")
    sys.exit(1)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.