2014-01-08 175 views
7

我在学习使用Python和scikit学习和执行的代码(最初是从http://scikit-learn.org/stable/auto_examples/document_classification_20newsgroups.html#example-document-classification-20newsgroups-py)以下块IPython的笔记本电脑(使用Python 2.7):SystemExit:2的错误调用parse_args()在IPython的笔记本时

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) 

在运行代码,我遇到下列错误:

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. 

我跟着指令并执行%TB,和下面出现:

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

据我所知,optparse已被弃用,以支持argparse,但由于我想逐块理解教程,我希望能够在iPython笔记本中运行代码以了解其工作原理。似乎someone else had this problem previously,但没有提出解决方案。

有没有办法解决这个错误,所以我可以从iPython笔记本内运行教程代码?

+0

的可能的复制[SystemExit:2错误调用解析\ _args()时(http://stackoverflow.com/questions/42249982/systemexit-2-error-when-calling-parse-args ) – daphtdazz

+0

在我的情况下,我的代码在其他IDE(同一台计算机)和另一台计算机上的Jupyter笔记本上工作 – user3226167

回答

2

您可以添加你需要的参数作为字符串

(opts, args) = op.parse_args(["--report"])