2

我有一个 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在此之后。那么我该怎么做呢?

4

2 回答 2

4

使用引号:

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

这与 Python 无关,这就是 shell 的工作方式。

于 2013-06-10T20:32:11.060 回答
3

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

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

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

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

请注意,这不是 Python 特有的问题:每个命令行程序都必须这样做才能传递包含空格的字符串!

于 2013-06-10T20:32:31.977 回答