无法使用argparse运行脚本, - datadir错误

时间:2015-09-27 19:58:34

标签: python python-2.7 argparse

我正在尝试运行已实现argparse的脚本。运行时,我收到以下错误:

  

用法:compute_distances.py [-h] --datadir DATADIR --info INFO --outdir OUTDIR   compute_distances.py:error:参数--datadir是必需的

我试图添加一个datadir参数,但是,我无法弄清楚之后没有给我一个语法错误的方法......

// UPDATE2:

删除了所有不直接属于argparse实现的代码。

#------------------------------------------------------------------------------
# Main program
#------------------------------------------------------------------------------

# Set up the parsing of command-line arguments
parser = argparse.ArgumentParser(description="Compute distance functions on vectors")
parser.add_argument("--datadir", required=True, 
                    help="Path to input directory containing the vectorized data")
parser.add_argument("--info", required=True, 
                    help="Name of file containing information about documents (name and label)")
parser.add_argument("--outdir", required=True, 
                    help="Path to the output directory, where the output file will be created")
args = parser.parse_args()

# Read the info file with details of the documents to process
try:
    file_name = "%s/%s" % (args.datadir, args.info)
    f_in = open(file_name, 'r')
except IOError:
    print "Input file %s does not exist" % file_name
    sys.exit(1)

# If the output directory does not exist, then create it
if not os.path.exists(args.outdir):
    os.makedirs(args.outdir)

脚本调用

compute_distances.py [-h] "datadir"

1 个答案:

答案 0 :(得分:4)

如果您使用以下命令运行脚本:

python compute_distances.py -h

您将在您提供的代码示例中看到argparse模块设置的详细使用说明。这基本上打印了每个parser.add_argument(...)调用的帮助字符串,例如:

parser.add_argument(
    "--datadir",
    required=True, 
    help="Path to input directory containing the vectorized data"
)

因此,您的脚本调用需要看起来更像:

python compute_distances.py \
    --datadir ./my_files/vectorized_data/ \
    --info ./my_files/names_and_labels.txt \
    --outdir ./my_files/output_data/

注意:上面的\只是继续执行每个换行符的命令(因此它对Stack Overflow来说更具可读性) - 你可以在一行中将它们全部写在一起,而不是{{1} }。