我有一个在命令行中运行的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
。那我怎么能这样做呢?
答案 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的问题:每个命令行程序必须执行此操作才能传递包含空格的字符串!