用引号传递的Python参数

时间:2013-06-25 12:42:29

标签: python command-line-interface command-line-arguments

我正在尝试通过参数将文件列表传递给我的python脚本:

python script.py -o aaa -s bbb "filename.txt" "filename2.txt" "file name3.txt"

不幸的是,ArgumentParser忽略了引号而不是给出3个文件的列表,而是给出了4个元素的列表,如下所示:

1) "filename.txt"
2) "filename2.txt"
3) "file
4) name3.txt"

它完全忽略了引号。如何使用引号?

3 个答案:

答案 0 :(得分:2)

很难看到你正在使用什么或任何代码。 您的shell 可能干扰,您可能需要使用\转义空格。

实施例: python script.py -o a -f "file1.txt" "file\ 2.csv"

答案 1 :(得分:0)

没有代码很难,但考虑到你正在使用sys.argv[],你可以轻松地使用引号传递文件参数,例如当你需要一个带有空格的文件或argv时:python script.py "myFile.txt" "otherFile.jpeg" 试试这个简单的代码来理解:

import sys

for n, p in enumerate(sys.argv):
    print("Parameter: %d = %s") % (n, p))`

您可以看到第一个argv是您正在运行的文件名。

答案 2 :(得分:0)

看起来这不是python的错。我正在从bash脚本中调用python脚本,这使得引号混乱成为参数。