【发布时间】:2013-06-04 05:39:33
【问题描述】:
我刚刚创建了a Python project,它使用argparse 来解析参数。但它似乎不支持多行参数。可以查看项目中的example/command-line.sh,会发现看不懂下面的样式
#!/bin/bash
../scripts_gen.py --template template.txt \
--save-to scripts \
--param "{'data':'datasets.txt', \
'lambda':[`echo 0.{0..9}|sed -E 's/\s+/,/g'`], \
'seed':[233,874]}" \
--format "{data}_lambda={lambda}_seed={seed}.sh" \
--delete
请注意,这在 shell 脚本中是合法的:总是可以写
$ ls -l \
> -f
在控制台或 shell 脚本文件中(在这种情况下没有提示)。那么我可以通过argparse 添加对此的支持吗?谢谢。
【问题讨论】:
-
这应该没问题。你看到什么错误?您可能不需要引用字符串中的 ``。
-
@SethMMorton 在上面的示例中,我将看到 Python 脚本可以识别第一个参数
--template,但忽略其余的。然后shell后来抱怨它找不到像--save-to这样的命令...... -
问题出在您的 bash 脚本中。如果它按预期工作,python 甚至不会知道参数之间有换行符——shell 会处理它并删除换行符。第一个反斜杠后很可能有一个空格。
-
@alexis 我使用的是 Cygwin,但后来尝试了 Debian 7.0,看起来还可以。这可能是 Cygwin 的问题。但是Cygwin可以识别
ls这个例子,所以还是有点奇怪。 -
好的,如果 same 文件在 Debian 上工作正常,那么它不是反斜杠后面的空格。可能是脚本中的行尾有问题?
标签: python command-line-arguments argparse