使用Python中的ArgumentParser从指定路径读取文件

问题描述:

我想在本文所指定的实现之后,在我的文本语料库上使用python训练手套模型。 Glove model 而从指定的路径使用Python中的ArgumentParser从指定路径读取文件

parser.add_argument('corpus', metavar='corpus_path', 
         type=partial(codecs.open, encoding='utf-8')) 

如何指定该参数文件路径读取语料库文件,我遇到的问题。 我用命令行参数如下图所示

C:\Users\JAYASHREE\Documents\NLP>python Glove_python_bbc.py 'C:/Users/JAYASHREE/Documents/NLP/text-corpus' --vocab-path C:/Users/JAYASHREE/Documents/NLP/vocabulary --cooccur-path C:/Users/JAYASHREE/Documents/NLP/cooccur_matrix -w 10 --min-count 10 --vector-path C:/Users/JAYASHREE/Documents/NLP/word-vector -s 40 --iterations 10 --learning-rate 0.1 --save-often True 

我收到错误如下

Traceback (most recent call last): 
    File "Glove_python_bbc.py", line 380, in <module> 
    main(parse_args()) 
    File "Glove_python_bbc.py", line 70, in parse_args 
    return parser.parse_args() 
    File "C:\Users\JAYASHREE\Anaconda2\lib\argparse.py", line 1701, in parse_args 
    args, argv = self.parse_known_args(args, namespace) 
    File "C:\Users\JAYASHREE\Anaconda2\lib\argparse.py", line 1733, in parse_known_args 
    namespace, args = self._parse_known_args(args, namespace) 
    File "C:\Users\JAYASHREE\Anaconda2\lib\argparse.py", line 1921, in _parse_known_args 
    positionals_end_index = consume_positionals(start_index) 
    File "C:\Users\JAYASHREE\Anaconda2\lib\argparse.py", line 1898, in consume_positionals 
    take_action(action, args) 
    File "C:\Users\JAYASHREE\Anaconda2\lib\argparse.py", line 1791, in take_action 
    argument_values = self._get_values(action, argument_strings) 
    File "C:\Users\JAYASHREE\Anaconda2\lib\argparse.py", line 2231, in _get_values 
    value = self._get_value(action, arg_string) 
    File "C:\Users\JAYASHREE\Anaconda2\lib\argparse.py", line 2260, in _get_value 
    result = type_func(arg_string) 
    File "C:\Users\JAYASHREE\Anaconda2\lib\codecs.py", line 896, in open 
    file = __builtin__.open(filename, mode, buffering) 
IOError: [Errno 22] invalid mode ('rb') or filename: "'C:/Users/JAYASHREE/Documents/NLP/text-corpus'" 

如何参数传递给语料库路径

感谢

在我印象中, Windows中的单引号会导致命令行参数出现问题,它们不会被转义,而会被解释为字符串的一部分。请参阅错误日志中的最后一行:

IOError: [Errno 22] invalid mode ('rb') or filename: "'C:/Users/JAYASHREE/Documents/NLP/text-corpus'" 

文件名中有单引号。

只需用双引号替换单引号,或者在你的情况下,省略这些值,你会没事的。

类Unix操作系统似乎并不存在这些问题。

请参阅thisthis问题你可能会得到一个提示。

+0

当我使用双引号或不使用我收到以下错误'[-h] [ - 词汇路径VOCAB_PATH] [--cooccur路径COOCCUR_PATH] [-w WINDOW_SIZE] [报价的任何 - 最小计数MIN_COUNT] [--vector路径VECTOR_PATH] [-s VECTOR_SIZE] [--iterations ITERATIONS] [--learning速率LEARNING_RATE] [--save-经常] corpus_path Glove_python_bbc.py:错误:无法识别的参数:真' – Jayashree

+1

@Jayashree这是另一回事。 ' - 经常保存'在那里不需要特定的'真实'。当出现'--save-often'选项意味着你已经将该选项设置为true(参见'action ='store_true''),只需删除True,然后完成。 – Chazeon