命令行选项解析器,目录名称中包含空格

时间:2013-06-10 20:30:28

标签: shell

我有一个在命令行中运行的Python程序。它有一个'-d'选项来取一个目录名,如下所示:

foo.py -d dir_name

但是当我在dir_name中包含空格的目录上运行它时,例如:

foo.py -d C:/My Folder/hello

它在空间之前和之后分成两部分。

我的代码使用getopt函数来解析命令行选项:

try:
    opts, args = getopt.getopt(sys.argv[1:], "d:")
except getopt.GetoptError:
    print('foo.py -d <dir_name>')
    sys.exit(1)

for opt, arg in opts:
    if opt in ('-d',):
        dir_name = arg
        do_all(dir_name)

此后变量dir_name=C:/My而不是C:/My Folder/hello。那我怎么能这样做呢?

2 个答案:

答案 0 :(得分:4)

使用引号:

foo.py -d "C:/My Folder/hello"

这不是关于Python,而是shell的工作方式。

答案 1 :(得分:3)

在引号内传递参数,如下所示:

foo.py -d "C:/My Folder/hello"

或者,如果shell允许,您可以转义空格:

foo.py -d C:/My\ Folder/hello

请注意,这不是特定于Python的问题:每个命令行程序必须执行此操作才能传递包含空格的字符串!